在自定义类型的DataTable列中显示对象属性

时间:2014-06-21 20:39:39

标签: c# wpf data-binding datagrid datatable

我有一个DataTable,它由string类型和Node类

的自定义对象组成
public class Node
{
    public string Name { get; set; }
    public int Id { get; set; }

    public Node(string name, int id)
    {
        Name = name;
        Id = id;
    }

}

 <DataGrid Name="data1" AutoGenerateColumns="True" ItemsSource="{Binding MyDataTable}" />

问题是我将DataTable绑定到Datagrid。列节点下的所有条目都显示为完整类名称。我想显示Node的Name属性。

1 个答案:

答案 0 :(得分:1)

有两种方法可以实现这一目标:

简单的是覆盖 ToString() 类的 Node 方法并返回 Name 属性从它。

public class Node
{
   ....
   public override string ToString()
   {
      return Name;
   }
}

OR

您必须在dataGrid上将 AutoGenerateColumns 设置为 False 并提供您自己的一组列。

<DataGrid Name="data1" AutoGenerateColumns="False"
          ItemsSource="{Binding MyDataTable}">
   <DataGrid.Columns>
      ..... // Other columns will go here.
     <DataGridTextColumn Binding="{Binding Node.Name}"/>
   </DataGrid.Columns>
</DataGrid>