WPF ListView 鼠标点击,移动改变背景色不启作用

构建数据源

XML 复制代码
 <Window.Resources>
        <x:ArrayExtension x:Key="stringList"
                          xmlns="clr-namespace:System;assembly=mscorlib"
                          Type="String">
            <String>第一行</String>
            <String>第二行</String>
            <String>第三行</String>
            <String>第四行</String>
        </x:ArrayExtension>
    </Window.Resources>
  1. <ListView.ItemContainerStyle> + <ListView.View> 可以生效,背景色变颜色,

ListView.ItemContainerStyle 中存放触发器

ListView.View中存放数据

这样只能按列显示多列多行,不能多行多列作为一项显示

如下所示:

XML 复制代码
 <ListView Grid.Row="0" Name="ItemList" ItemsSource="{StaticResource stringList}" >
            <ListView.ItemContainerStyle>
                <Style TargetType="{x:Type ListViewItem}">
                    <Setter Property="FontSize" Value="15" />
                    <Setter Property="Margin" Value="0,-40,0,40" />
                    <Style.Triggers>
                        <Trigger Property="IsSelected" Value="True">
                            <Setter Property="Background" Value="#9C71B9" />
                            <Setter Property="Foreground" Value="white" />
                        </Trigger>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="Background" Value="Green" />
                            <Setter Property="Foreground" Value="white" />
                        </Trigger>
                        <Trigger Property="IsEnabled" Value="False">
                            <Setter Property="Background" Value="#757575" />
                            <Setter Property="Foreground" Value="black" />
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </ListView.ItemContainerStyle>
            <ListView.View>
                <GridView>
                    <GridViewColumn>
                        <GridViewColumn Header="Name" Width="120" DisplayMemberBinding="{Binding}" />
                    </GridViewColumn>
                </GridView>
            </ListView.View>
        </ListView>
  1. <ListView.ItemContainerStyle> + <ListView.ItemTemplate> 不生效,背景色不改变颜色,

ListView.ItemContainerStyle 中存放触发器

ListView.ItemTemplate中存放数据

如下所示:

XML 复制代码
        <ListView  Name="ItemList" ItemsSource="{StaticResource stringList}">
            <ListView.ItemContainerStyle>
                <Style TargetType="{x:Type ListViewItem}">
                    <Setter Property="FontSize" Value="15" />
                    <Setter Property="Margin" Value="0,-40,0,40" />
                    <Style.Triggers>
                        <Trigger Property="IsSelected" Value="True">
                            <Setter Property="Background" Value="#9C71B9" />
                            <Setter Property="Foreground" Value="white" />
                        </Trigger>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="Background" Value="Green" />
                            <Setter Property="Foreground" Value="white" />
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </ListView.ItemContainerStyle>
            <ListView.ItemTemplate>
                <DataTemplate>
                    <StackPanel >
                        <StackPanel Orientation="Horizontal">
                            <TextBlock Text="{Binding }" Height="30"  Name="Label_Amount" Width="100" Foreground="White"/>

                        </StackPanel>
                    </StackPanel>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
  1. 只有ListView.ItemContainerStyle,可以生效

数据放在<Setter Property="Template">里,触发器放在 <Style.Triggers>,如下所示:

XML 复制代码
<ListView   Width="300" Height="400" x:Name="celist" ItemsSource="{StaticResource stringList}" Background="Black">
            <ListView.ItemContainerStyle>
                <Style TargetType="ListViewItem">
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="ListBoxItem">
                                <Border Background="{TemplateBinding Background}">
                                    <StackPanel >
                                        <StackPanel Orientation="Horizontal">
                                            <TextBlock Text="{Binding }" Height="30"  Name="Label_Amount" Width="100" Foreground="White"/>
                                           
                                        </StackPanel>
                                        <StackPanel HorizontalAlignment="Left"  Orientation="Horizontal">
                                            <TextBlock Text="{Binding }" Name="Label_ShortDescription" Width="200" Foreground="White"/>

                                        </StackPanel>
                                    </StackPanel>
                                </Border>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>

                    <Style.Triggers>
                        <Trigger Property="IsSelected" Value="True">
                            <Setter Property="Background" Value="#9C71B9" />
                            <Setter Property="Foreground" Value="white" />
                        </Trigger>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="Background" Value="Green" />
                            <Setter Property="Foreground" Value="white" />
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </ListView.ItemContainerStyle>
        </ListView>
相关推荐
栈溢出了16 小时前
Redis 消息队列笔记:List 与 Pub/Sub
redis·笔记·list
云中飞鸿17 小时前
WPF分哪几块
wpf
newbe365241 天前
我们如何使用 impeccable 优化前端界面设计与实现稳定性
前端·人工智能·分布式·github·aigc·wpf
世人万千丶19 天前
成语接龙小应用 - HarmonyOS ArkUI 开发实战-TextInput与List列表-PC版本
华为·list·harmonyos·鸿蒙·鸿蒙系统
Chris _data19 天前
WPF 学习第三天 — Modbus RTU 串口通信
hadoop·学习·wpf
未若君雅裁19 天前
Python 数据容器详解,list、tuple、str、set、dict 到底怎么选
windows·python·list
苦学的罐头19 天前
C# 协变与逆变深度解析:为什么 IEnumerable<T> 能转换,而 List<T> 不行?
开发语言·c#·list
世人万千丶19 天前
家庭记账本小应用 - HarmonyOS ArkUI 开发实战-Tabs与List组件-PC版本
华为·list·harmonyos·鸿蒙
布吉岛的石头19 天前
Java 程序员第 43 阶段05:微服务整合大模型,跨服务调用架构设计实战,Seata分布式事务实战
wpf
步步为营DotNet19 天前
基于.NET Aspire 实现云原生应用的高效监控与可观测性
云原生·.net·wpf