自定义对象的WPF DataGrid列模板

自定义对象的WPF DataGrid列模板,wpf,datatable,binding,datagrid,Wpf,Datatable,Binding,Datagrid,我将WPFDataGrid绑定到DataTable。DataTable具有包含字符串的列和包含自定义对象的列(Requirement): 我定义了一个模板,用于显示我的需求对象: <Window.Resources> <DataTemplate x:Key="dgTemplateRequirement"> <StackPanel Orientation="Vertical">

我将WPF
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>