Я пытаюсь сделать так, чтобы цвет выделения выбранных элементов в моем ListBox оставался неизменным, когда ListBox теряет фокус. После нескольких часов рыскания в Интернете и пробования различных решений я не могу заставить ничего работать. Пожалуйста, помогите мне понять, почему решение, которое я пробую сейчас, похоже, ничего не меняет.
Это определено в верхней части моего xaml в Window:
<Window.Resources>
<Style x:Key = "myListboxStyle">
<Style.Resources>
<SolidColorBrush x:Key = "{x:Static SystemColors.HighlightBrushKey}" Color = "Red" />
<SolidColorBrush x:Key = "{x:Static SystemColors.ControlBrushKey}" Color = "Red" />
</Style.Resources>
</Style>
</Window.Resources>
и это мой список:
<ListBox x:Name = "lstNaes" Style = "{StaticResource myListboxStyle}" DisplayMemberPath = "Name" Margin = "5" SelectionMode = "Extended"/>
Цвет (красный) просто для проверки. Что мне действительно нужно, так это цвет подсветки по умолчанию, чтобы он не менялся, когда ListBox (или ListView) теряет фокус. Я не понимаю, почему ни одно из найденных мной решений не работает для меня.





Если вы используете Windows 8 или более позднюю версию, вам следует определить собственный ControlTemplate для контейнеров ListViewItem:
<ListBox x:Name = "lstNaes" DisplayMemberPath = "Name" Margin = "5" SelectionMode = "Extended">
<ListBox.ItemContainerStyle>
<Style TargetType = "ListBoxItem">
<Setter Property = "Template">
<Setter.Value>
<ControlTemplate TargetType = "{x:Type ListBoxItem}">
<Border x:Name = "Bd" BorderBrush = "{TemplateBinding BorderBrush}" BorderThickness = "{TemplateBinding BorderThickness}" Background = "{TemplateBinding Background}" Padding = "{TemplateBinding Padding}" SnapsToDevicePixels = "true">
<ContentPresenter HorizontalAlignment = "{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels = "{TemplateBinding SnapsToDevicePixels}" VerticalAlignment = "{TemplateBinding VerticalContentAlignment}"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property = "IsMouseOver" Value = "True">
<Setter Property = "Background" TargetName = "Bd" Value = "#1F26A0DA"/>
<Setter Property = "BorderBrush" TargetName = "Bd" Value = "#a826A0Da"/>
</Trigger>
<Trigger Property = "IsSelected" Value = "True">
<Setter Property = "Background" TargetName = "Bd" Value = "#3D26A0DA"/>
<Setter Property = "BorderBrush" TargetName = "Bd" Value = "#FF26A0DA"/>
</Trigger>
<Trigger Property = "IsEnabled" Value = "False">
<Setter Property = "TextElement.Foreground" TargetName = "Bd" Value = "{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
Есть ли способ заставить это работать и для ListView? Я попытался заменить весь ListBox на ListView, но в моем списке появилось множество загадочных вещей. В моем ListView есть 2 столбца
@MatthewHagemann: Пожалуйста, задайте новый вопрос, если у вас есть другая проблема.
Я был уверен, что атрибут TargetType (элемента Style) был обязательным, но, возможно, я путаю с Xamarin Forms