【问题标题】:How do I bind my controls in a WPF DataGridTemplateColumn to a DataTable?如何将 WPF DataGridTemplateColumn 中的控件绑定到 DataTable?
【发布时间】:2010-10-10 21:21:20
【问题描述】:
我有一个绑定到 DataTable 的 DataGrid,我想为使用 DataGridTemplateColumn 创建自定义列,但我不确定如何引用 DataTable 单元格中的值。我在网上看到的每个示例要么绑定 DataTable 并且不更改模板,要么使用自定义对象并引用绑定对象的属性。有谁知道如何从 DataGridTemplateColumn 的控件中引用存储在 DataTable 中的值?
谢谢,
布赖恩
编辑:我现在看到可以使用数据表中列的名称作为绑定路径。不幸的是,我打算尝试动态地将模板分配给列,所以我不知道当前列的名称。是否有另一种方法可以做我想做的事情(以编程方式为 DataGrid 中的每个列或单元格分配一个模板)?
【问题讨论】:
标签:
wpf
datagrid
binding
datatable
【解决方案1】:
我遇到了同样的问题,我不得不说 Microsoft 为 WPF DataGrid 提供的文档完全是垃圾。我在互联网上搜索了如何执行此操作的示例,发现 NONE 显然控制不足。
似乎在 WPF Datagrid 上唯一起作用的是原始类型。
我尝试做一些基本的事情,例如创建一个具有一些属性的自定义类型(例如 Person)的 DataTable。在将 DataTable 绑定到 WPF DataGrid 时,我已经尝试了我读过的所有技巧,以编程方式使用 DataGridTemplateColumn,并且所有示例都给出了政治家的答案(从而避免了真正的问题)。
一种解决方案在设计时在 XAML 中声明 DataTemplate,这是无用的,因为 DataTable 是动态的(因此不是答案)。
我最接近的方法是创建一个 ObservableCollection 并将其绑定到 DataGrid(同样不是真正的答案)。
除此之外。无论我改变或尝试了多少事情,都没有任何约束力。所以我最终得到了空白控件,这很烦人。