WPF 动态列(DataGridTemplateColumn) 绑定数据 (自定义控件)

原文:WPF 动态列(DataGridTemplateColumn) 绑定数据 (自定义控件)

因为项目需要 要实现这个~

怎么实现画红框内容部分

田字格和上面Textbox 属于一个自定义控件  大致功能是获得一个字符串 和一组颜色值 最后田字格会显示不同颜色

这篇主要讲 DataGridTemplateColumn 并实现重写Datatemplate

重点注释 单独列出来了

LS 是列数据对象集合

listName是行数据对象集合

var Item = new FrameworkElementFactory(typeof(ItemControl)); //生成自定义对象

Item.SetBinding(ItemControl.SetRGBProperty, binding); //设置bing

MyDataTemplate.VisualTree = Item;  增加到可视树


  1. public void addColumn()
  2. {
  3. LS.Add("表下カップ綿天竺仮縫い_37s_C_1");
  4. LS.Add("上カップマーキしつけ_28s_C_2");
  5. LS.Add("上下カップ接ぎ_33s_C_3");
  6. LS.Add("上下カップ押え_62s_B_4");
  7. LS.Add("カップ脇しつけ_14s_B_5");
  8. LS.Add("表上カップレース端押さえ_41s_B_6");
  9. for (int i = 0; i < LS.Count; i++)
  10. {
  11. DataGridTemplateColumn dl = new DataGridTemplateColumn();
  12. dl.Header = LS[i];
  13. DataTemplate MyDataTemplate = new DataTemplate();
  14. Binding binding = new Binding()
  15. {
  16. Path = new PropertyPath("Ml.Num" + (i + 1))// 需绑定的数据源属性名
  17. ,
  18. Mode = BindingMode.TwoWay// 绑定模式
  19. ,
  20. UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged
  21. };
  22. var Item = new FrameworkElementFactory(typeof(ItemControl));
  23. Item.SetBinding(ItemControl.SetRGBProperty, binding);
  24. MyDataTemplate.VisualTree = Item;
  25. dl.CellTemplate = MyDataTemplate;
  26. dataGrid.Columns.Add(dl);
  27. }
  28. }

因为是后台的 所以没有XAML什么事

想知道这个控件怎么生成的 可以看2019年10月的所有WPF文章 一步一步的知识点都在 还不明白的 可以留言

WPF 动态列(DataGridTemplateColumn) 绑定数据 (自定义控件)对象绑定改成对象了

今天头疼~ 不应该熬夜~

原文地址:https://www.cnblogs.com/lonelyxmas/p/12075406.html

时间: 2024-08-29 08:33:11

WPF 动态列(DataGridTemplateColumn) 绑定数据 (自定义控件)的相关文章

WPF 动态列(DataGridTemplateColumn) 绑定数据 (自定义控件)对象绑定

原文:WPF 动态列(DataGridTemplateColumn) 绑定数据 (自定义控件)对象绑定 WPF 动态列(DataGridTemplateColumn) 绑定数据 (自定义控件) 上面的使用动态对象加载的数据 发现一个问题 一个是卡 二是 对象数量得写死 很不开心 最后使用对象方式 也应该使用对象方式 因为业务需要 我的datagird 数据来源于俩个对象 列头是一个,行和行内容是一个  不好的点是列行的数据匹配 不好掌控 因为业务问题 数据库设计问题 后期再修改成一个对象吧 行对

WPF Datagrid 动态生成列 并绑定数据

原文:WPF Datagrid 动态生成列 并绑定数据 说的是这里 因为列头是动态加载的 (后台for循环 一会能看到代码) 数据来源于左侧列 左侧列数据源 当然num1 属于临时的dome使用  可以用ObservableCollection集合代表 动态创建属性 WPF 动态生成对象属性 (dynamic) ObservableCollection<NameList> listName = new ObservableCollection<NameList>(); privat

很简单的列数据作为行字段输出(但是输出的动态列下的数据是有问题的,按场景修改)

set @XX=''; SELECT @XX := CONCAT( @XX,     ID , ',' ) FROM (SELECT DISTINCT ID FROM TX) A; set @YY =  CONCAT('SELECT TX.*,',LEFT(@XX,LENGTH(@XX)-1),'  FROM TX ');  PREPARE stmt2 FROM @YY; EXECUTE stmt2;

WPF (DataGridColumnHeader)实现自义定列头样式 并绑定数据

原文:WPF (DataGridColumnHeader)实现自义定列头样式 并绑定数据 实现功能是这样的 自定义列头 样式 样式里的 数据来源于后台绑定 这篇就说头样式 和头样式数据绑定 思路 1)实现功能的时候 首先想的是编辑列头样式 选择使用DataGridTextColumn 编辑 DataGridColumnHeader 样式 样式很简单 就布局好了 这段结束 2)动态列 没有要求换肤 所以就没有完全使用MVVM 直接写后台循环   到这里数据有了 List<string> LS =

Silverlight系列--动态生成DataGrid列 根据动态列绑定Dictionary数据

1.获取表头数据源动态生成DataGrid表头 DataGridTextColumn d = new DataGridTextColumn(); d.Header = itemPriceClass.PriceKindCode + itemPriceClass.PriceKindName; Binding bin = new Binding(); bin.Converter = new RowIndexConverter(); bin.ConverterParameter = itemPriceC

WPF DATAGrid 空白列 后台绑定列 处理

原文:WPF DATAGrid 空白列 后台绑定列 处理 AutoGenerateColumns <DataGrid x:Name="dataGrid" Margin="10,10,0,0" RowHeaderStyle="{DynamicResource DataGridRowHeaderStyle1}" > <DataGrid.Columns> <DataGridTextColumn Header="姓

WPF DataGrid 绑定数据及时更新的处理

原文:WPF DataGrid 绑定数据及时更新的处理 默认情况下datagrid 绑定数据源后,在界面编辑某一列后,数据不会及时更新到内存对象中.如在同一行上有一个命令对来获取 当前选中行(内存对象)发现,数据未更新过来. 解决办法: 在列的绑定属性里加上UpdateSourceTrigger,示例XAML如下 <DataGrid Name="dgProducts" IsReadOnly="False" CanUserAddRows="False&

MariaDB 10.0.X中,动态列支持 JSON 格式来获取数据。

MariaDB 10.0.X中,动态列(Dynamic Columns),可以支持 JSON 格式来获取数据. 为了兼容传统SQL语法,MariaDB 10和MySQL5.7支持原生JSON格式,即关系型数据库和文档型NoSQL数据库集于一身. 使用说明: ###表结构 create table assets (   item_name varchar(32) primary key, -- A common attribute for all items   dynamic_cols  blo

GridView等表格模板列绑定数据的方法

//绑定GridView每一行中的CheckBoxList protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { CheckBoxList cbl = (CheckBoxList)e.Row.FindControl("ckbCheckBox"); if (cbl != null) {