DataGrid - 使用子List绑定自定义对象

时间:2011-12-12 15:36:38

标签: wpf data-binding binding mvvm datagrid

我有一个

ObservableCollection<CustomObj> DataInfo 

在我的MVVM WPF项目中。 CustomObj类如下所示:

public class class1 : ObservableObject
{
    public class1()
    {
        MySecondProperty = new Class2();
    }

    public string MyStringValue { get; set; }
    public Class2 MySecondProperty { get; set; }
    public List<Class3> MyThirdProperty{ get; set; }
}

什么时候我像这样绑定WPF属性

<DataGrid Name="dgMyDataGrid" 
              SelectedItem="{Binding SelectedItem}"
              ItemsSource="{Binding DataInfo}">
</DataGrid>

我从“MyStringValue”获取值,并在数据网格中获取对象和集合。 谷歌没有给我任何结果,我找不到类似于这个例子的任何东西。

如何以简单的方式从Class2和List中获取数据以显示数据?

1 个答案:

答案 0 :(得分:2)

您需要定义列并在列定义中进行绑定。

以下将在第二列

中显示MySecondProperty.SubProperty的值

对于Class3,如果你想要类似组合框的东西,那么使用模板化的datagrid列 http://blogs.msdn.com/b/vinsibal/archive/2008/08/19/wpf-datagrid-stock-and-template-columns.aspx 有列模板的信息

<DataGrid Name="dgMyDataGrid" SelectedItem="{Binding SelectedItem}" ItemsSource="{Binding DataInfo}">
  <DataGrid.Columns>
    <DataGridTextColumn Header="MyStringValue " Width="*" Binding="{Binding Path=MyStringValue }" />
    <DataGridTextColumn Header="MySecondProperty.SubProperty" Width="*" Binding="{Binding Path=MySecondProperty.SubProperty}" />
  </DataGrid.Columns>
</DataGrid>