ItemContainerStyle блокирует ItemContainerStyleSelector
У меня есть код:
<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). И это работает. Но если я добавлю ItemContainerStyle="{StaticResource DeviceListItemStyle}"
создать несколько триггеров и т. д. в DeviceListItemStyle
затем DeviceListItemStyleSelector
не работает Помоги мне, пожалуйста!)
1 ответ
Решение
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>