更改 ListView 中 GridView 行的背景颜色

2024-01-11

我有一个列表视图如下:

<ListView x:Name="lvLedger" 
              Height="{Binding Path=GridHight, ElementName=ledgerList}" 
              Width="{Binding Path=GridWidth, ElementName=ledgerList}" 
              ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
              ScrollViewer.VerticalScrollBarVisibility="Auto" 
              ItemsSource="{Binding}" 
              BorderThickness="0" 
              Background="Transparent" 
              BorderBrush="Transparent" 
              DataContextChanged="lvLedger_DataContextChanged">
        <ListView.View>
            <GridView>
                <GridViewColumn x:Name="c2ServiceDate" Header="Service Date" Width="82" >
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding Path=servicedate}"  
                                ToolTipService.ShowDuration="60000" 
                                ToolTipService.InitialShowDelay="0" 
                                ToolTip="{Binding Path=type}" />
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
                <GridViewColumn x:Name="c3CPT" Header="Code" Width="50">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding Path=cpt}"  
                                ToolTipService.ShowDuration="60000" 
                                ToolTipService.InitialShowDelay="0" 
                                ToolTip="{Binding Path=type}" />
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
        <!--More columns here-->        </GridViewColumn></GridView></ListView.View></ListView>

我希望能够做的是根据服务日期和代码的组合更改行的背景颜色。因此,我可能连续有 3 行具有相同的服务日期和代码,这些行应该具有相同的背景,后跟 2 行具有不同颜色的行,然后根据相同的规则进行交替

11/19 356(蓝色)
11/19 356(蓝色)
11/19/235(红色)
11/2/20 356(蓝色)
11/2/20 356(蓝色)
11/2/20 356(蓝色)
2/21/11 564(红色)
2/21/11 564(红色)
2/21/11 564(红色)
2/21/11 564(红色)
2/25/11 798(蓝色)
等等...

ItemSsource 正在从外部控件绑定到 DataView。

我真的不知道我怎么能做这样的事情,任何帮助将不胜感激。


如何将 ColorProperty 添加到您的行(线)绑定到的类/模型中。然后你已经有日期和数字了。设置它们后,还要设置颜色,现在无需转换器,您只需触发该属性即可:

<Style x:Key="ListViewItemStyle" TargetType="ListViewItem">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ListBoxItem">
                    <Border x:Name="Border" SnapsToDevicePixels="true">
                        <GridViewRowPresenter VerticalAlignment="Stretch" HorizontalAlignment="Stretch"/>
                        <Border.Style>
                            <Style TargetType="Border">
                                <Style.Triggers>
                                    <DataTrigger Binding="{Binding ColorProperty}" Value="Blue">
                                        <Setter Property="Background" Value="Blue"/>
                                    </DataTrigger>
                                    <DataTrigger Binding="{Binding ColorProperty}" Value="Red">
                                        <Setter Property="Background" Value="Red"/>
                                    </DataTrigger>
                                </Style.Triggers>
                            </Style>
                        </Border.Style>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style> 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更改 ListView 中 GridView 行的背景颜色 的相关文章

  • 如何使WPF TreeView风格成为WinForms TreeView?

    WPF 默认的 TreeView 非常好 我仍然希望它有连接每个子元素的线 就像 Windows 窗体 TreeView 一样 我在网上搜索了一些例子 但设计得不够好 我怎样才能用WPF实现它 让我回答我自己的问题 Code 您需要做的只是
  • 使用 SharedPreferences 从 ListView 保存数据

    我尝试寻找答案 但找不到我要找的东西 这是我第一次尝试保存数据 使用 SharedPreferences 所以我不太确定我在做什么 要点是 用户在 EditText 中输入内容后 它会填充 ListView 但我也希望这样 当执行此操作时
  • 在两个屏幕上拉伸 WPF 窗口

    我是 WPF 的初学者 我希望我的应用程序能够跨越两个具有相同分辨率的屏幕 我需要一个示例代码应用程序 因为我不知道从哪里开始 谢谢 The Screen课程将为您提供有关所有屏幕的信息 在之前没有实际做过的情况下 我会尝试以下操作 int
  • 在资源字典wpf中共享数据模板的一部分

    我有一个 ResourceDictionary 列出了我的 wpf 应用程序中使用的不同样式
  • .NET ListView列顺序问题

    我在表单中遇到问题 我已按以下顺序将列添加到 NET ListView 控件 A B C D A D 列的显示索引按顺序为 0 3 但它们的显示顺序错误 A B D C these are switched at runtime 注意 一切
  • 在 WPF 中的不同控件上显示验证错误模板

    我有一个UserControl包含其他控件和TextBox 它有一个Value绑定到的属性TextBox文本并有ValidatesOnDataErrors设置为 True 当验证错误发生时Value属性绑定 错误模板 标准红色边框 显示在整
  • 如何将 Binding.Path 属性绑定到基础数据?

    我正在尝试以非常动态的方式绑定 TextBlock 的 Text 属性 我需要从底层对象获取路径 这是数据模板
  • WPF:GridViewColumn 调整大小事件

    我在用着ListView with GridView 有没有GridViewColumn调整事件大小 我会处理PropertyChanged事件代替 这PropertyChanged在 Visual Studio 智能感知中看不到事件 但您
  • 无法序列化 SolidColorBrush

    错误消息表明我无法序列化类 因为无法序列化 SolidColorBrush 该类具有 Brush 的公共属性 有解决办法吗 它更复杂 我尝试使用可以序列化的支持属性问题是我还需要冻结高光 这样我就可以在BackgroundWorker上创建
  • 绑定为资源

    我可以定义一个Binding as a Resource然后用不同的方式重复使用它Controls特性 Example Binding
  • WPF 双值数据与自定义小数分隔符绑定

    是否有一种集中方式让 WPF UI 遵守控制面板 gt 区域设置中设置的自定义小数分隔符 当我将双值数据绑定到文本框时 我想使用区域设置中设置的小数分隔符输入值 下面的代码 当放入应用程序的构造函数中时 将使用当前区域性设置的小数分隔符 但
  • 使 MahApps.Metro 中的 ProgressRing 更小

    看起来 MahApps Metro ProgressRing 控件默认的最小尺寸为 60x60 ProgressRing 有一个名为 IsLarge 的属性 但即使将其设置为 False 似乎也不会影响使 ProgressRing 小于 6
  • 检测适配器中的滚动方向(向上/向下)

    我正在尝试在我的项目中模仿 Google Plus 应用程序 因为它现在似乎是参考 滚动时的列表视图效果非常好 我想做类似的事情 我从 LayoutAnimationController 开始http android er blogspot
  • 如何在 XAML 中根据窗口或屏幕大小设置网格列最大宽度

    我的窗口中有一个 3 列网格 第一列上有一个 GridSplitter 我想将第一列的 MaxWidth 设置为父窗口或页面的三分之一Width or ActualWidth 并且如果可能的话我更愿意在 XAML 中执行此操作 这是一些在
  • 如何在 WPF textBlock 控件中滚动文本?

    HI 我是 WPF 新手 正在寻找在 WPF 应用程序中滚动文本的解决方案 我尝试了一些动画 但遇到了剪辑问题我在以下地方找到了解决我的问题的可能方法 http social msdn microsoft com forums en US
  • WPF - 防止用户操作在应用程序繁忙时排队

    当应用程序繁忙时 意味着 UI 线程被阻止执行某些操作 您建议采用什么方法来忽略用户请求 例如鼠标单击 具体的例子可能是网格控件的排序 如果我们说排序很慢 那么在操作运行时 我想忽略额外的用户点击 这些点击会堆积并多次执行操作 除了诉诸禁用
  • 根据项目类型和视图选项切换 ListBox ItemTemplate

    我目前正在 WPF 中实现一个列表框 其项目有 2 个替代布局 到目前为止 我已经使用了DataTrigger切换ItemTemplate为了ListBox并且运行良好
  • 如何将用户控件的属性绑定到 WPF 中同一控件的属性?

    在我的用户控件中 我有一个收款电话解决方案 public List
  • 单击 GridView 查找选定行

    我正在尝试获取 GridView 并从单击的行中获取数据 我已经尝试了下面的代码 当我单击该行时 我会返回选定的索引 但是当我查看 GridView 中的实际行时 它们显示为空 不知道我错过了什么 ASP 使我的网格
  • 使用 MVVM 在 WPF 中进行 COMBOBOX 过滤

    我正在使用 WPF mvvm 方法开发一个应用程序 我有一个要求 必须在组合框中显示项目列表以供选择 基于一些标志 我需要从组合框中过滤掉一些项目以供选择 我尝试使用两种不同的项目源 一个具有完整列表 另一个具有过滤列表 并基于我想要更改项

随机推荐