wpf - IsMouseOver 与 ListViewItem 的 IsSelected 重叠

标签 wpf

我为模板化列表框项目定义了样式(这是其中的一部分):

 <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/

相关文章:

wpf - 需要WPF工具包控件的主题(尤其是DataGrid)

wpf - 如何在 ListView 的组标题中保存 IsExpanded 状态 - Take 2

wpf - ComboBox - TreeView,关闭项目选择的弹出窗口?

c# - 我们可以在 WPF 中的 DataGrid 单元格内有一个网格吗?

c# - 如何允许我的应用程序在 Windows 启动时运行(或更好的用户登录)而不会被 vista/7 阻止

c# - WPF(C#) 如何使用post请求传输文件?

WPF-从下往上动画高度

.net - 有没有办法将使用 .appref-ms 的 ClickOnce 应用程序添加到系统路径?

.net - 如何将 'System.Windows.Input.Key' 转换为 'System.Windows.Forms.Keys' ?

ItemsControl 内 DataTemplate 中的 WPF UserControl - 如何绑定(bind)到 ItemsSource 的父级