我有代码:
<ListBox Style="{StaticResource DeviceListBox}"
ItemsSource="{Binding MeterList, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}"
SelectedItem="{Binding CurrentMeter, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}"
ItemContainerStyleSelector="{StaticResource DeviceListItemStyleSelector}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Style="{StaticResource DeviceListText}" Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>我使用ItemContainerStyleSelector="{StaticResource DeviceListItemStyleSelector}"更改每个列表框项目中的背景色(例如,黑色或银色,请参见- http://msdn.microsoft.com/en-us/library/system.windows.controls.styleselector.aspx)。而且它是有效的。但是如果我在DeviceListItemStyle中添加ItemContainerStyle="{StaticResource DeviceListItemStyle}"来创建一些触发器等,那么DeviceListItemStyleSelector就不能工作。请帮帮我!)
发布于 2011-12-15 23:27:50
ItemContainerStyleSelector根据一些逻辑选择样式,所以很明显,手动设置样式将覆盖选择器应用的任何样式。
为什么你不在你的ItemContainerStyle中设置背景颜色
<Style x:Key="DeviceListItemStyle" TargetType="{x:Type ListBoxItem}">
<Setter Property="Background" Value="Black" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsSilver}" Value="True">
<Setter Property="Background" Value="Silver" />
</DataTrigger>
</Style.Triggers>
</Style>https://stackoverflow.com/questions/8522156
复制相似问题