将Xaml DataGrid绑定到子数组中的第一个项目

时间:2012-03-26 09:30:36

标签: xaml binding datagrid

我有一个DataGrid,它绑定到一个对象数组。 这些对象包含一些属性和另一个项目数组,如下所示:

public class MySubClass
{
  public String SubItem {get;set;}
}

public class MyContrievedSampleCollection
{
  public String Name {get;set;}
  public ObservableCollection<MySubClass> Sublist {get; set;}
}

所以我将DataGrid绑定到一个ObservableCollection,它可以很好地工作:

<DataGrid ItemsSource="{Binding MyCollection}">
  <DataGrid.Columns>
    <DataGridTextColumn Header="Name" Binding="{Binding Name, UpdateSourceTrigger=PropertyChanged}"/>
  </DataGrid.Columns>
</DataGrid>

现在我想添加另一个列,该列绑定到子列表的第一项中的属性:

 <DataGridTextColumn Header="Subitem" Binding="{Binding Sublist[0].Subitem, UpdateSourceTrigger=PropertyChanged}"/>

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

<DataGridTextColumn Header="Subitem" Binding="{Binding Sublist[0].Subitem, UpdateSourceTrigger=PropertyChanged}"/>

应该有用,但是..

1)可能需要将您的Subitem转换为DependencyProperty或至少在MySubClass中实现INotifyPropertyChanged(请参阅http://msdn.microsoft.com/en-us/library/ms743695.aspx)。

2)如果索引0处的项目被删除(或更改;不确定,如果ObservableCollection负责处理),则可以松开绑定。您应该绑定到始终存在的属性。