You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WPF ListView使用DataTemplateSelector时ItemContainerStyle鼠标悬停失效

问题原因

WPF的ListViewItem自带默认控件模板(ControlTemplate),其中已经为IsMouseOver状态定义了背景样式。由于控件模板内的视觉状态触发器优先级高于外部Style中定义的触发器,你设置的红色背景会被默认样式覆盖,导致无法生效。

解决方案

有两种常见的解决方式,可根据需求选择:

方案1:重写ListViewItem的ControlTemplate(完全自定义)

直接替换默认模板,在模板内部定义IsMouseOver状态的样式,确保优先级最高:

<Style x:Key="listViewStyle" TargetType="{x:Type ListViewItem}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type ListViewItem}">
                <Border x:Name="border" 
                        Background="{TemplateBinding Background}"
                        BorderBrush="{TemplateBinding BorderBrush}"
                        BorderThickness="{TemplateBinding BorderThickness}"
                        Padding="{TemplateBinding Padding}">
                    <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                      VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                </Border>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter TargetName="border" Property="Background" Value="Red"/>
                    </Trigger>
                    <!-- 可按需添加IsSelected等其他状态的样式 -->
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

方案2:覆盖默认系统资源(轻量方案)

WPF默认模板中,IsMouseOver状态的背景使用了系统动态资源,只需在Style内部重写对应资源键即可替换样式:

<Style x:Key="listViewStyle" TargetType="{x:Type ListViewItem}">
    <Style.Resources>
        <!-- 覆盖传统.NET框架下的鼠标悬停背景 -->
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Red"/>
        <!-- 覆盖.NET Core/.NET 5+下的鼠标悬停背景 -->
        <SolidColorBrush x:Key="Item.MouseOver.Background" Color="Red"/>
    </Style.Resources>
</Style>

内容的提问来源于stack exchange,提问作者user20320225

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 09:37:38