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

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><BorderBorderThickness="1"Background="{Binding LogType, Converter={StaticResource LogTypeToBackgroundConverter}}"CornerRadius="5"Padding="5"HorizontalAlignment="Center"VerticalAlignment="Center"><TextBlockText="{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 中。如果能帮到你们,记得点赞收藏呐!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 基于Netty实现TCP客户端:封装断线重连、连接保持
  • 僵尸网络开发了新的攻击技术和基础设施
  • 【C++指南】作用域限定符 :: 使用详解
  • Pandas Series对象创建,属性,索引及运算详解
  • 【系统架构设计师】软件架构的概念(经典习题)
  • 深度学习--------------序列模型
  • 17、Python如何读写文本文件
  • k8s-API 访问控制
  • AMD ThinkSystem服务器上的 Linux 和 C 状态设置 - Lenovo ThinkSystem
  • sqlgun靶场漏洞挖掘
  • 解码未来:H.265与H.266技术对比及EasyCVR视频汇聚平台编码技术优势
  • SpringBoot集成Thymeleaf模板引擎,为什么使用(详细介绍)
  • 【计算机网络】数据链路层深度解析
  • 初写MySQL四张表:(3/4)
  • 编译QT源码时的configure参数须知
  • [case10]使用RSQL实现端到端的动态查询
  • [译]Python中的类属性与实例属性的区别
  • 【node学习】协程
  • C++类中的特殊成员函数
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • storm drpc实例
  • 翻译--Thinking in React
  • 分类模型——Logistics Regression
  • 计算机在识别图像时“看到”了什么?
  • 记录一下第一次使用npm
  • 坑!为什么View.startAnimation不起作用?
  • 前嗅ForeSpider中数据浏览界面介绍
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 微信支付JSAPI,实测!终极方案
  • 小程序01:wepy框架整合iview webapp UI
  • 一些关于Rust在2019年的思考
  • 原生js练习题---第五课
  • 正则表达式
  • Mac 上flink的安装与启动
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • 从如何停掉 Promise 链说起
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • #Z2294. 打印树的直径
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (分享)自己整理的一些简单awk实用语句
  • (三十)Flask之wtforms库【剖析源码上篇】
  • (十一)手动添加用户和文件的特殊权限
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (转载)CentOS查看系统信息|CentOS查看命令
  • (转载)Google Chrome调试JS
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .NET 服务 ServiceController
  • .net 后台导出excel ,word
  • .Net程序帮助文档制作
  • .NET的微型Web框架 Nancy
  • .Net开发笔记(二十)创建一个需要授权的第三方组件
  • .net知识和学习方法系列(二十一)CLR-枚举