【问题标题】:WPF: IsMouseOver trigger on ListViewItemWPF:ListViewItem 上的 IsMouseOver 触发器
【发布时间】:2018-04-01 15:50:54
【问题描述】:

我有以下代码:

    <Style>
        <Style TargetType="{x:Type ListViewItem}" x:Key="MyStyle">
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="Background" Value="Red" />
            </Trigger>
        </Style.Triggers>
    </Style>

当我使用这种样式在我的 ListView 上设置 ItemContainerStyle 属性时,它不起作用 - 背景不会改变。

我看到很少有类似的问题,人们回答说它不起作用,以防万一 一个 ListView 但没有人给出一个简单的回应如何创建这个触发器。

你有什么想法吗?

【问题讨论】:

    标签: wpf xaml listview triggers listviewitem


    【解决方案1】:

    您需要更改 listviewitem 的模板才能实现此目的。 这是一个基于 win10 模板的工作标记:

        <ListView>
            <ListView.Resources>
                <Style TargetType="ListViewItem">
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate  TargetType="{x:Type ListViewItem}">
                                <Border x:Name="Bd" 
                    BorderBrush="{TemplateBinding BorderBrush}" 
                    BorderThickness="{TemplateBinding BorderThickness}"
                    Background="Transparent" 
                    Padding="{TemplateBinding Padding}" SnapsToDevicePixels="True">
                                    <ContentPresenter ContentTemplate="{TemplateBinding ContentTemplate}" 
                                  Content="{TemplateBinding Content}" 
                                  ContentStringFormat="{TemplateBinding ContentStringFormat}" 
                                  HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
                                  SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" 
                                  VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                                </Border>
                                <ControlTemplate.Triggers>
                                    <MultiTrigger>
                                        <MultiTrigger.Conditions>
                                            <Condition Property="IsMouseOver" Value="True"/>
                                        </MultiTrigger.Conditions>
                                        <Setter Property="Background" TargetName="Bd" Value="Red"/>
                                        <Setter Property="BorderBrush" TargetName="Bd" Value="#A826A0DA"/>
                                    </MultiTrigger>
                                    <MultiTrigger>
                                        <MultiTrigger.Conditions>
                                            <Condition Property="Selector.IsSelectionActive" Value="False"/>
                                            <Condition Property="IsSelected" Value="True"/>
                                        </MultiTrigger.Conditions>
                                        <Setter Property="Background" TargetName="Bd" Value="Orange"/>
                                        <Setter Property="BorderBrush" TargetName="Bd" Value="#FFDADADA"/>
                                    </MultiTrigger>
                                    <MultiTrigger>
                                        <MultiTrigger.Conditions>
                                            <Condition Property="Selector.IsSelectionActive" Value="True"/>
                                            <Condition Property="IsSelected" Value="True"/>
                                        </MultiTrigger.Conditions>
                                        <Setter Property="Background" TargetName="Bd" Value="Yellow"/>
                                        <Setter Property="BorderBrush" TargetName="Bd" Value="#FF26A0DA"/>
                                    </MultiTrigger>
                                    <Trigger Property="IsEnabled" Value="False">
                                        <Setter Property="TextElement.Foreground" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
                                    </Trigger>
                                </ControlTemplate.Triggers>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </ListView.Resources>
    
            <ListViewItem >AAAAAAAAAAAA</ListViewItem>
            <ListViewItem>BBBBBBBBBBBB</ListViewItem>
            <ListViewItem>CCCCCCCCCCCC</ListViewItem>
        </ListView>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-14
      • 1970-01-01
      • 1970-01-01
      • 2020-04-25
      相关资源
      最近更新 更多