C# WPF DataGrid 内容绑定时的单元格编辑类型模板

news/2025/10/23 15:34:23/文章来源:https://www.cnblogs.com/yxysuanfa/p/19160823

DataGrid的DataSource绑定的ObservableCollection<UserType>属性如果在运行中会发生变动,则不能在xaml手动定义Columns,否则当该属性发生变动时,UI不会随之更新,需要使用以下方法来实现单元格编辑类型的替换:

一、

设置DataGrid的AutoGenerateColumns为True,自动生成列的同时在AutoGeneratingColumn事件的方法将e.Column属性替换为DataGridTemplateColumn实例。

xaml:

    

cs:

      private void DataGridAutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e){DataGrid dataGrid = sender as DataGrid;string columnName = e.PropertyName;DataGridTemplateColumn column = new DataGridTemplateColumn();e.Column = column;}

在定义的DataGridTemplateColumn实例的CellTemplate和CellEditingTemplate属性赋值新的DataTemplate实例, 创建FrameworkElementFactory实例给DataTemplate实例的VisualTree赋值;FrameworkElementFactory实例可以使用SetBinding方法绑定数据源,使用SetValue方法指定模板,模板可定义在App.xaml里,通过Application.Current.FindResource方法获取。

 DataGridTemplateColumn column = new DataGridTemplateColumn();DgvCellDataTemplateSelector cellTemplate = Application.Current.FindResource("DgvCellTemplateSelector") as DgvCellDataTemplateSelector;DgvCellDataTemplateSelector cellEditingTemplate = Application.Current.FindResource("DgvCellEditingTemplateSelector") as DgvCellDataTemplateSelector;column.Header = columnName;column.CellTemplate = new DataTemplate();FrameworkElementFactory factory = new FrameworkElementFactory(typeof(ContentPresenter));factory.SetBinding(ContentPresenter.ContentProperty, new Binding(columnName));factory.SetValue(ContentPresenter.ContentTemplateSelectorProperty, cellTemplate);column.CellTemplate.VisualTree = factory;column.CellEditingTemplate = new DataTemplate();FrameworkElementFactory editingfactory = new FrameworkElementFactory(typeof(ContentPresenter));editingfactory.SetBinding(ContentPresenter.ContentProperty, new Binding(columnName));editingfactory.SetValue(ContentPresenter.ContentTemplateSelectorProperty, cellEditingTemplate);column.CellEditingTemplate.VisualTree = editingfactory;

二、

编写模板选择器,DgvCellDataTemplateSelector是个实现了DataTemplateSelector接口的类型:

public class TemplateMapping : List
{
}
public class TemplateMappingItem
{public object Value { get; set; }public DataTemplate Template { get; set; }
}
public class DgvCellDataTemplateSelector : DataTemplateSelector
{public DataTemplate DefaultTemplate { get; set; }public TemplateMapping TemplateMap { get; set; }public override DataTemplate SelectTemplate(object item, DependencyObject container){if (item == null) return DefaultTemplate;if (item is DataBase data){if (data == null) return DefaultTemplate;return TemplateMap?.Find(m => Equals(m.Value, data.dataType))?.Template ?? DefaultTemplate;}return DefaultTemplate;}
}

三、

定义模板和创建全局模板选择器实例,app.xaml:


四、

创建存放数据的UserType。

  public enum DataType{Readonly}public abstract class DataBase : NotifyPropertyChanged,ICloneable{private object value;public DataType dataType;public object Value { get { return value; } set { this.value = value;OnPropertyChanged(nameof(Value)); } }public DataBase() { }public abstract object Clone();}public class ReadOnlyData : DataBase{public ReadOnlyData(){dataType = DataType.Readonly;}public override object Clone(){var clone = new ReadOnlyData{Value = this.Value};return clone;}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/944350.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

别再说我不懂Node流了

Nodejs中包括4种类型的流:Readable、Writable、Duplex和Transform.Readable Stream 自定义Readable 自定义 Readable 流必须调用 new stream.Readable([options]) 构造函数并实现 readable._read() 方法。 import { R…

高效赋能房产销售:房地产客服管理微信小程序系统重磅来袭

一、概述总结 这款房地产客服管理微信小程序系统是专为房地产行业打造的高效客户管理工具,由合肥锐科网络科技研发,通过微擎系统交付,支持微信小程序和微信公众号多平台适配。系统以客户全生命周期管理为核心,整合…

IIc死锁的问题

IIc死锁的问题首先补充基本的,iic是线与(wire-and)接口,时钟线SCL数据线SDA在配置时都会使用开漏输出 可以靠io拉到0电平,1电平需要硬件设计外部上拉电阻。 总线空闲的时候SCL、SDA都是高电平, 起始信号 时钟线高…

增压压床生产厂家口碑榜:聚焦技术突破、产能数据及行业应用案例的权威深度解析

在工业制造领域,增压压床作为关键设备,广泛应用于汽车、航空航天及电子元件成型等环节,其性能直接关系到生产效率和产品质量。随着2025年技术迭代加速,市场对高精度、高稳定性的增压压床需求持续上升。本文基于权威…

2025年国内优质镀锌板厂家精选推荐:Q235镀锌板厂家推荐,聚焦品质与服务的实力之选

在建筑、家电、机械制造等领域的持续发展带动下,镀锌板市场需求稳步增长,但产品质量参差不齐、服务能力差异显著等问题也给采购决策带来挑战。基于市场口碑调研、产品性能监测及服务体验反馈,本文筛选出 5 家各具优…

详细介绍:K8s中的键值对

详细介绍:K8s中的键值对pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &q…

2025 年风机厂家最新推荐榜:聚焦交流/直流/无刷/大吸力等多类型风机,精选优质企业助力采购决策

引言 当前风机行业技术迭代加速,市场需求不断升级,各类风机产品层出不穷,却也存在质量参差不齐、技术实力悬殊的问题。企业在采购风机时,常面临不知如何挑选适配自身场景、兼具性能与口碑产品的困境,尤其在节能降…

权威调研榜单:山东智能镜框公司TOP3榜单好评深度解析

随着智能穿戴设备的快速发展,智能镜框作为结合健康监测与时尚设计的新兴产品,正成为工业与消费市场的热点。山东省凭借其制造业基础与科技创新能力,涌现出一批在智能镜框领域表现突出的企业。本报告基于权威行业调研…

2025 年最新推荐!变电站架构厂家榜单发布,全方位解析户外 / 户内 / GIS / 常规 / 智能型架构优质企业实力

引言 当前电力行业加速升级,新能源大规模并网、城市电网改造深化,变电站作为电力系统核心枢纽,其架构的质量与性能直接决定电力传输的安全稳定。但市场上变电站架构制造商数量众多,部分企业缺乏核心技术、产品质量…

Python-数据分析师修炼指南-全-

Python 数据分析师修炼指南(全)原文:Become a Python Data Analyst 协议:CC BY-NC-SA 4.0零、前言 Python 是领先的数据分析师和统计学家在处理海量数据集和复杂数据可视化时最常用和最流行的语言之一。 成为 Pyth…

2025 年电感源头厂家最新推荐榜单:功率 / 一体成型 / 屏蔽 / 共模等多系列电感优质制造商全方位解析

引言 当前电子产业飞速发展,电感作为核心被动元件,其品质直接关乎终端产品的稳定与可靠。但电感市场厂家数量繁杂,产品质量、技术实力、供货能力差异显著,下游企业在选购时常常陷入困境,尤其在汽车电子、数码产品…

完整教程:写csv测试

完整教程:写csv测试2025-10-23 15:14 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-f…

权威调研榜单:铜浮雕壁画生产厂家TOP3榜单好评深度解析

铜浮雕壁画作为一种传统工艺与现代艺术结合的装饰品,近年来在建筑、家居和公共艺术领域需求持续增长。根据行业数据显示,2024年铜浮雕壁画市场规模同比增长12%,其中高端定制产品占比达35%,反映出市场对工艺精度和艺…

深入解析:Python调用优云智算安装的ComfyUI服务器

深入解析:Python调用优云智算安装的ComfyUI服务器pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas"…

2025 智能/商超照明/灯具/灯光/源头厂家推荐榜:上海富明阳 5 星领跑,这些优质灯具成商超新选

随着商超运营精细化推进,优质商超照明灯具成为提升购物体验与控制能耗的关键配置。结合技术创新、场景适配与用户反馈,2025 年商超照明优质品牌榜单正式发布,其中上海富明阳照明凭借突出实力稳居 5 星推荐。 上海富…

权威调研榜单:湿式静电除尘设备生产厂家TOP3榜单好评深度解析

随着国家环保政策的持续收紧与工业超低排放需求的日益迫切,湿式静电除尘(WESP)技术作为治理复杂工业烟气的关键一环,其市场重要性愈发凸显。本报告旨在通过多维度的深度调研与分析,对当前国内湿式静电除尘设备生产…

完整教程:机器人中的电机与扭矩入门

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025 年化粪池生产厂家最新推荐排行榜:预制 / 水泥 / 玻璃钢等多类型优质厂商权威甄选

引言 随着市政建设提速与乡村振兴战略深化,化粪池作为污水处理的核心设施,其品质直接关联生态保护与民生质量。当前市场中,厂商数量超千家,但产品质量两极分化:部分作坊式企业沿用落后工艺,导致抗压不足、渗漏率…

Python 2025:云原生与容器化技巧的新浪潮

Python 2025:云原生与容器化技巧的新浪潮pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "…

latex 插图图片代码

插入两张并排图片:点击查看代码\begin{figure}[htbp]\centering % 居中\begin{subfigure}[t]{0.49\textwidth} % 第一个子图,宽度为文本宽的45%\centering\includegraphics[width=\linewidth]{Fig/20251019/finalSpe…