自定义对象的WPF DataGrid列模板
我将WPF自定义对象的WPF DataGrid列模板,wpf,datatable,binding,datagrid,Wpf,Datatable,Binding,Datagrid,我将WPFDataGrid绑定到DataTable。DataTable具有包含字符串的列和包含自定义对象的列(Requirement): 我定义了一个模板,用于显示我的需求对象: <Window.Resources> <DataTemplate x:Key="dgTemplateRequirement"> <StackPanel Orientation="Vertical">
DataGrid
绑定到DataTable
。DataTable
具有包含字符串的列和包含自定义对象的列(Requirement
):
我定义了一个模板,用于显示我的需求
对象:
<Window.Resources>
<DataTemplate x:Key="dgTemplateRequirement">
<StackPanel Orientation="Vertical">
<TextBlock Text="{Binding Requirement.SupplierStatus}" />
<TextBlock Text="{Binding Requirement.SupplierComment}" />
<TextBlock Text="{Binding Requirement.OEMStatus}" />
</StackPanel>
</DataTemplate>
</Window.Resources>
与
需求
属性(供应商状态
,供应商评论
,…)的绑定
无效且保持为空。如何绑定到存储在数据表中的自定义对象的属性?我在这篇文章中找到了解决方案:
必须使用转换器才能从表到达实际对象。绑定不起作用,因为模板单元格的DataContext
是一个DataRowView
您可以像这样创建转换器,也可以直接使用索引器绑定路径访问成员,其中requirement
是数据表中列的名称,例如:
<TextBlock Text="{Binding Row[requirement].SupplierStatus}" />
我的表中的列是在运行时创建的,因此我无法按名称访问它们,但转换器工作正常。
<Window.Resources>
<DataTemplate x:Key="dgTemplateRequirement">
<StackPanel Orientation="Vertical">
<TextBlock Text="{Binding Requirement.SupplierStatus}" />
<TextBlock Text="{Binding Requirement.SupplierComment}" />
<TextBlock Text="{Binding Requirement.OEMStatus}" />
</StackPanel>
</DataTemplate>
</Window.Resources>
<TextBlock Text="{Binding Row[requirement].SupplierStatus}" />
<DataTemplate x:Key="dgTemplateRequirement">
<StackPanel Orientation="Vertical" DataContext="{Binding Row[requirement]}">
<TextBlock Text="{Binding SupplierStatus}" />
<TextBlock Text="{Binding SupplierComment}" />
<TextBlock Text="{Binding OEMStatus}" />
</StackPanel>
</DataTemplate>