美文网首页
WPF如何使ListView中的选定项目变色或根据绑定数据属性显

WPF如何使ListView中的选定项目变色或根据绑定数据属性显

作者: 达哥傻乐 | 来源:发表于2023-07-19 15:56 被阅读0次
  • 在ListView中自定义了模板,想让选定的项目的内容变成想要的颜色。
    下面以如下的自定义模板为例说明:
<ListView.ItemTemplate>
    <DataTemplate>
        <WrapPanel Orientation="Vertical" Margin="4 " >
            <Grid Height="2" Background="YellowGreen"/>
            <TextBlock Text="{Binding Path=EName}" ToolTip="{Binding EName}" FontWeight="Bold" TextAlignment="Left" Width="150" >
                <TextBlock.Style>
                    <Style TargetType="TextBlock">
                        <Setter Property="Foreground" Value="DarkBlue"/>
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource AncestorType=ListViewItem}}" Value="True">
                                <Setter Property="Foreground" Value="Red"/>
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </TextBlock.Style>
            </TextBlock>
            <TextBlock Text="{Binding Path=CName}" ToolTip="{Binding CName}" FontWeight="Bold" TextAlignment="Left" Width="150" >
                <TextBlock.Style>
                    <Style TargetType="TextBlock">
                        <Setter Property="Foreground" Value="DarkBlue"/>
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource AncestorType=ListViewItem}}" Value="True">
                                <Setter Property="Foreground" Value="Red"/>
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </TextBlock.Style>

            </TextBlock>
            <TextBlock Text="{Binding Path=Dept, StringFormat=Dept: {0}}" TextAlignment="Left" Width="150"/>
            <TextBlock Text="{Binding Path=ExtNo, StringFormat=Ext: {0}}" TextAlignment="Left" Width="150"/>
            <TextBlock Text="{Binding Path=MobileNo, StringFormat=Mobile: {0}}" TextAlignment="Left" Width="150"/>
        </WrapPanel>
    </DataTemplate>
</ListView.ItemTemplate>

重点在下面的部分:

<TextBlock.Style>
    <Style TargetType="TextBlock">
        <Setter Property="Foreground" Value="DarkBlue"/>
        <Style.Triggers>
            <DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource AncestorType=ListViewItem}}" Value="True">
                <Setter Property="Foreground" Value="Red"/>
            </DataTrigger>
        </Style.Triggers>
    </Style>
</TextBlock.Style>

效果如图所示,可见中间选定的项目的颜色变成了指定的红色,而两边未选定的内容是默认的深蓝色:


图1. 效果演示
  • 想让ListView的显示项目根据绑定数据的属性变色
    下面以ListViewItem根据绑定的数据的Changed属性来变色,如果这个值为真则显示为红色字体。
<ListView x:Name="lvSelectedRoles" ItemsSource="{Binding ElementName=lvUsers, Path=SelectedItem.SelectedRoles}" DisplayMemberPath="Code" SelectionChanged="lvSelectedRoles_SelectionChanged">
    <ListView.ItemContainerStyle>
        <Style TargetType="{x:Type ListViewItem}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Changed}" Value="True">
                    <Setter Property="Foreground" Value="Red" />
                </DataTrigger>
            </Style.Triggers>
            <Setter Property="ToolTip" Value="{Binding Name}"/>
        </Style>
    </ListView.ItemContainerStyle>
</ListView>

效果如下图,Changed值为真的项目显示为红色:


图2. 效果演示:Changed值为真的项目显示为红色

相关文章

  • WPF数据绑定

    元素绑定 数据绑定最简单的形式是,源对象是WPF元素而且源属性是依赖属性。依赖项属性具有内置的更改通知支持,当在源...

  • vue视频教程系列第八节-vue中的属性绑定和双向数据绑定

    今天主要讲vue中的属性绑定和双向数据绑定 属性绑定: 例如: 所有过往,皆为序章 在项目开发中,这个title...

  • Vue指令汇总

    数据绑定 属性绑定 判断条件 循环 事件监听 HTML的引入 组件的使用 组件数据的绑定 防止属性被修改——使响应...

  • 八、【扩展知识】数据绑定控件的应用

    数据绑定控件和数据源控件 1、数据绑定控件:具有DataSource属性或DataSourceID属性,用于在UI...

  • 开始吧

    了解如何使您的开发环境随时可以使用数据绑定库,包括支持Android Studio中的数据绑定代码。 数据绑定库提...

  • 关于 SAP UI5 OData V4 模型的类型自动识别

    除非明确指定类型,否则属性绑定会根据属性的元数据自动确定适当的类型。 例如,绑定 {DeliveryDate} 将...

  • RecyclerView<第五篇>:分割线(含粘贴头

    在以前,项目中普遍使用ListView,而ListView有个divider属性可以添加分割线,然而这种分割线却显...

  • wxml

    1、标签中数据绑定 示例 属性名 = "{{变量或表达式}}" 绑定属性变量时,双引号与变量之间不能够有空格,否则...

  • 使用Apple最新的Swift UI技术编写更好的app(5)

    画饼状图+使任意view卡片化 在此之前先修改一下属性的访问限制。属性的访问限制是根据项目如何使用数据确定的。 p...

  • Collectors.groupingBy用法

    Collectors.groupingBy根据一个或多个属性对集合中的项目进行分组 数据准备: 分组 按照类目分组...

网友评论

      本文标题:WPF如何使ListView中的选定项目变色或根据绑定数据属性显

      本文链接:https://www.haomeiwen.com/subject/ycxaudtx.html