我有一个类 Book
:
class Book
{
public int Id {get; set;}
public string Title {get; set;}
public string Authors {get; set;}
public string Genre {get; set;}
public virtual ICollection <Publication> Publications {get; set;}
}
在表单中有两个数据网格(命名为
A
和B
):A
显示了一个 Book
对象列表,B
显示所选书籍的 Publications
元素(即绑定到A
中选择的行) 。问题是如何将
B
与A
的当前行绑定?我这样做,但我认为这并不完全正确:
<DataGrid x:Name="BooksGrid"
ItemsSource="{Binding Path=WorkingBooksSet, Mode=TwoWay}"
IsSynchronizedWithCurrentItem="True" RowDetailsVisibilityMode="VisibleWhenSelected"
AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=Id}" Width="Auto" />
<DataGridTextColumn Binding="{Binding Path=Title}" Width="*" />
<DataGridTextColumn Binding="{Binding Path=Authors}" Width="*" />
<DataGridTextColumn Binding="{Binding Path=Genre}" Width="*" />
</DataGrid.Columns>
<DataGrid.RowDetailsTemplate>
<DataTemplate>
// Second DataGrid
<DataGrid ItemsSource="{Binding ElementName=BooksGrid, Path=SelectedItem.Publications}"
AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=Publisher}" />
<DataGridTextColumn Binding="{Binding Path=ISBN}" />
...
</DataGrid.Columns>
</DataGrid>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
</DataGrid>
WorkingBooksSet
是我 ViewModel 中的 ObservableCollection
所以我在 这份绑定小抄中 找到了解决方法。