我有什么?
我有一个ListBox
填充了XML文件中的项目。给DynamicResource
Style
IsSelected
属性,并在ItemContainerStyle
中为ListBox
写入触发器。
我想做什么?
即使焦点移出IsSelected
,我仍希望保持所选项目突出显示。
我面临什么问题?
当我选择一个项目时,{{1}}触发器中指定的样式有效。但是,当我将焦点移出列表框(按Tab键或单击其他控件)时,所选项目将失去其样式。有什么方法可以保留所选的项目风格吗?
提前致谢!
答案 0 :(得分:32)
The answer referenced在某些情况下会解决问题,但是当控件被禁用/只读时它会中断并且它也会覆盖颜色方案而不是利用它们时,它会不理想。我的建议是在ListBox标签中添加以下内容:
<ListBox....>
<ListBox.Resources>
<Style TargetType="ListBoxItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<Border Name="Border" Padding="2" SnapsToDevicePixels="true">
<ContentPresenter />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="true">
<Setter TargetName="Border" Property="Background"
Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListBox.Resources>
</ListBox>
无论控制状态如何,这样做都会在列表框项目上设置突出显示背景颜色(无论控制状态如何)。
我的回答是基于已经给出这些答案的答案的帮助,以及以下博客:http://blogs.vbcity.com/xtab/archive/2009/06/29/9344.aspx
答案 1 :(得分:1)
如果您只设置背景颜色,请尝试按照this answer替换ListBox的ControlBrush
。