基本上,我有一个带有两个条件的ListView:
- 不要让用户选择任何项目(出于可用性原因)
- 如果行满足特定条件,则用特殊背景色显示行
做这两点都很容易,但我不能同时做到这两点。下面是一个让解释更简单的例子:
<ListView ItemsSource="{Binding Items}">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Focusable" Value="false"/>
</Style>
</ListView.ItemContainerStyle>
<ListView.Resources>
<Style TargetType="{x:Type ListViewItem}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsOnline}" Value="false">
<Setter Property="Background" Value="LightGray" />
</DataTrigger>
</Style.Triggers>
</Style>
</ListView.Resources>
[... the rest ...]
</ListView>
如果我删除ListView.ItemContainerStyle部件,背景色将正确绘制。但是当Focusable设置为false时,将Background设置为LightGray没有效果。
有没有一种方法可以同时做到这两点?
2条答案
按热度按时间wyyhbhjk1#
在当前代码中,实际上设置了两次样式,因此第二个样式声明将被忽略。去掉ItemContainerStyle并将Focusable属性移动到第二个样式中,如下所示:
rkttyhzu2#
看起来你还需要一个触发器来解决“如果选择”的出现。就像这样:
此外,您可能会发现此讨论也很有用:Change selection-color of WPF ListViewItem