当前位置: 首页 > article >正文

WPF DataGrid 列表中,DataGrid.Columns 列根据不同的值显示不同内容

需求:在WPF DataGrid 控件中,有以下列,绑定了一个LogType,值分别是0,1,2,根据不同的值,显示不同的内容以及背景

<DataGrid ItemsSource="{Binding EventLog}">
 <DataGrid.Columns>
 <DataGridTextColumn Width="150" Binding="{Binding LogType}" Header="级别" >
</DataGrid.Columns>
</DataGrid>

最终效果图如下:

在这里插入图片描述

一.实现代码

1.需要使用 DataGridTemplateColumn 来为 LogType 列自定义显示模板

<DataGrid ItemsSource="{Binding EventLog}">
<DataGrid.Columns>
    <DataGridTemplateColumn Header="级别" Width="150">
        <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <Border
                    BorderThickness="1"
                    Background="{Binding LogType, Converter={StaticResource LogTypeToBackgroundConverter}}"
                    CornerRadius="5"
                    Padding="5"
                    HorizontalAlignment="Center"
                    VerticalAlignment="Center">
                    <TextBlock
                        Text="{Binding LogType, Converter={StaticResource LogTypeToTextConverter}}"
                        Foreground="White"
                        HorizontalAlignment="Center"
                        VerticalAlignment="Center"
                        FontWeight="Bold"/>
                </Border>
            </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>

2.接下来,我们需要定义两个转换器(LogTypeToBackgroundConverterLogTypeToTextConverter),用于根据 LogType 的值来设置背景颜色和显示文本。

2.1 LogTypeToBackgroundConverter 转换器实现
public class LogTypeToBackgroundConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value is int logType)
        {
            switch (logType)
            {
                case 0:
                    return "#00ee84";
                case 1:
                    return "#f9c715";
                case 2:
                    return "#df3c0b";
                default:
                    return "#00d5e0";
            }
        }
        return "#00d5e0";
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return null;
    }
}
2.2 LogTypeToTextConverter 转换器实现
public class LogTypeToTextConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value is int logType)
        {
            switch (logType)
            {
                case 0:
                    return "提示";
                case 1:
                    return "警告";
                case 2:
                    return "错误";
                default:
                    return "未知";
            }
        }
        return "未知";
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return null;
    }
}

3.将转换器,添加到资源字典中

在你的 XAML 用户控件中,需要将转换器添加到资源字典中,以便在数据模板中使用。添加代码如下:

在这里插入图片描述

这样就完成了 LogType 列的自定义显示。根据 LogType 的值,可以看到不同的背景颜色和文本显示在 DataGrid 中。如果能帮到你们,记得点赞收藏呐!


http://www.kler.cn/news/313422.html

相关文章:

  • MyBatis 源码解析:TypeHandler 设计与自定义实现
  • ★pwn 更改pwn题libc保姆级教程★
  • SpringBoot+Thymeleaf图书管理系统
  • Go语言并发模式详解:深入理解管道与上下文的高级用法
  • 集群聊天服务器项目【C++】项目介绍和环境搭建
  • 【Verilog学习日常】—牛客网刷题—Verilog企业真题—VL77
  • 缓存预热方案详解
  • 论文笔记:交替单模态适应的多模态表征学习
  • WebLogic 后台弱⼝令GetShell
  • WPF入门教学四 WPF控件概述
  • opencv中读取图片、视频以及对其基本操作
  • 关系型数据库,NoSQL和内存数据库三种数据库的比较
  • OpenCV库学习之NMSBoxes函数
  • ubuntu如何进行自动mount硬盘(简易法)
  • Ansible——Playbook基本功能???
  • TortoiseSVN图标不显示的解决
  • 网页交互模拟:模拟用户输入、点击、选择、滚动等交互操作
  • 实习期间git的分枝管理以及最常用的命令
  • PyCharm 安装教程
  • C#+EmguCV合并视频文件
  • Qt Linguist 短语书批量导入翻译.ts导入.qph
  • kubernetes技术详解,带你深入了解k8s
  • 汽车应用生态系统的飞跃
  • Docker 华为云镜像加速器配置
  • Imagen架构详解:理解其背后的技术与创新
  • 大数据-138 - ClickHouse 集群 表引擎详解3 - MergeTree 存储结构 数据标记 分区 索引 标记 压缩协同
  • 锐尔15注册机 锐尔文档扫描影像处理系统15功能介绍
  • ChatGPT 4o 使用指南 (9月更新)
  • 【OceanBase诊断调优】—— 断连接问题根因分析
  • MongoDB在大数据场景应用