【发布时间】:2011-11-22 12:28:48
【问题描述】:
如何使背景高亮颜色依赖于 ListViewItem 的某些属性?
【问题讨论】:
标签: wpf listview dynamic highlight
如何使背景高亮颜色依赖于 ListViewItem 的某些属性?
【问题讨论】:
标签: wpf listview dynamic highlight
编辑:
要更改选定的背景,您必须覆盖 ListViewItem 的模板。
看到这个...http://msdn.microsoft.com/en-us/library/ms788717(v=vs.90).aspx。
在模板中将{StaticResource SelectedBackgroundBrush} 替换为您喜欢的背景画笔。
要根据控件模板不依赖的任何其他属性更改背景,您可以使用触发器...
<ListView ...>
<ListView.Resources>
<Style TargetType="{x:Type ListViewItem}">
<Style.Triggers>
<Trigger Property="SomeListViewItemProperty" Value="Value1">
<Setter Property="Background" Value="Red" />
</Trigger>
<Trigger Property="SomeListViewItemProperty" Value="Value2">
<Setter Property="Background" Value="Yellow" />
</Trigger>
</Style.Triggers>
</Style>
<ListView.Resources>
</ListView>
我希望这能回答你的问题。
【讨论】:
这是人们经常询问的问题。实际上,由于某些原因,当在 ListView 或 ListBox 中选择一个项目时,背景颜色并不是改变的那个。这有点棘手。事实上,您需要覆盖项目模板所绑定的静态颜色资源的值。因此,要更改项目的突出显示颜色,您必须这样做:
<ListView>
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Style.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Orange"/>
</Style.Resources>
</Style>
</ListView.ItemContainerStyle>
</List>
这里有一个更成熟的解释:Trigger for ListBoxItem
【讨论】: