当ListBox
失去焦点时,我试图使ListBox
中所选项目的突出显示颜色保持不变。经过数小时的搜索,尝试了不同的解决方案之后,我什么都无法工作。请帮助我了解为什么我现在尝试的解决方案似乎没有任何改变。
这是在Window的xaml顶部定义的:
<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
)失去焦点时,它不会改变。我不明白为什么找不到解决方案对我有用。
答案 0 :(得分:4)
如果您使用的是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>