我想从我的ListView
中选择时突出显示该行,但我无法让它工作。任何人都可以看看我有什么,告诉我我做错了什么?另一个问题是如何在我的ViewModel中拥有一个属性并根据bool值设置Background
颜色,如何实现?
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="Green" />
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="Yellow" />
</Trigger>
</Style.Triggers>
</Style>
</ListView.ItemContainerStyle>
答案 0 :(得分:3)
这里的问题是ListView
的项目模板自动添加了刷子类型SystemColors.HighlightBrushKey
的“选定的突出显示” - “真正的解决方案”将覆盖项目模板定义,但是一种方式你可以得到你在这里的东西是这样的:
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Style.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Green"/>
</Style.Resources>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="Yellow" />
</Trigger>
</Style.Triggers>
</Style>
</ListView.ItemContainerStyle>
答案 1 :(得分:0)
您可以使用名为IValueConverter
的接口将Bool值绑定到Color画笔。
答案 2 :(得分:0)
<ListView Name="listBox1" ItemsSource="{Binding Path=SimpleList}"
HorizontalAlignment="Left" VerticalAlignment="Top" Background="Olive">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<EventSetter Event="MouseEnter" Handler="listBox1_ListBoxItem_MouseEnter"/>
<EventSetter Event="MouseLeave" Handler="listBox1_ListBoxItem_MouseLeave"/>
<Style.Resources>
<!-- Background of selected item when focussed -->
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}"
Color="Green"/>
<!-- Background of selected item when not focussed -->
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}"
Color="Yellow" />
</Style.Resources>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<!--<Setter Property="FontWeight" Value="Bold" />-->
<Setter Property="Background" Value="Orange" />
</Trigger>
</Style.Triggers>
</Style>
</ListView.ItemContainerStyle>
</ListView>