我为模板化列表框项目定义了样式(这是其中的一部分):
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="true">
<Setter TargetName="Border" Property="Background" Value="Azure"/>
<Setter TargetName="Border" Property="Height" Value="Auto"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="Border" Property="Background" Value="Cornsilk"/>
</Trigger>
</ControlTemplate.Triggers>
不幸的是,当我选择某个项目时,它仍然保留为 IsMouseOver 定义的状态。我必须将鼠标移出盒子才能使其成为 Azure。可能是缺少什么东西吗?也许有一种方法可以使某种样式成为压倒一切的样式(IsSelected)? 谢谢。
最佳答案
颠倒触发器的顺序。当两个条件相同时,仅适用最后一个。
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="Border" Property="Background" Value="Cornsilk"/>
</Trigger>
<Trigger Property="IsSelected" Value="true">
<Setter TargetName="Border" Property="Background" Value="Azure"/>
<Setter TargetName="Border" Property="Height" Value="Auto"/>
</Trigger>
</ControlTemplate.Triggers>
关于wpf - IsMouseOver 与 ListViewItem 的 IsSelected 重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9213392/