Я пытаюсь изменить цвет фона выбранных элементов в списке. Я делал это раньше, используя
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Yellow" />
, который работал. Но если я установил IsEnabled в значение false в ListBox, весь фон ListBox превращается в указанный цвет ControlBrush. Я хочу изменить цвет только в том случае, если выбран элемент ListBoxItem и элемент ListBox не имеет фокуса.
Я пробовал некоторые варианты с триггерами, но не могу заставить его работать. Даже мультитриггер, содержащий условия с IsSelected и IsFocused, не работал для меня.
У кого-нибудь есть решение для меня?
Edit:
Попробовал пример с ItemContainerStyle, где я получаю исключение NullReferenceException в моем проекте. В новом решении это работает. Вот код, где он не работает:
<ItemsControl ItemsSource="{Binding Path=Classification.Values}" ScrollViewer.HorizontalScrollBarVisibility="Disabled"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" IsEnabled="{Binding Path=ClassificationEnabled}"
VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch" Grid.Row="0" x:Name="measureClassificationControl">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Margin="2">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Text="{Binding Category}"/>
<ListBox ItemsSource="{Binding Values.SortedList}" SelectionMode="Extended" Grid.Row="1" AlternationCount="2"
SelectionChanged="ListBox_SelectionChanged" ScrollViewer.CanContentScroll="True" ScrollViewer.VerticalScrollBarVisibility="Auto" ScrollViewer.HorizontalScrollBarVisibility="Disabled" Height="120">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock TextWrapping="NoWrap" Text="{Binding Key}">
<TextBlock.ToolTip>
<ToolTip>
<TextBlock TextWrapping="NoWrap" Text="{Binding Value}"/>
</ToolTip>
</TextBlock.ToolTip>
</TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="2"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>