绑定另一个数据网格中的选定行
本文关键字:网格 另一个 数据 数据网 绑定 | 更新日期: 2023-09-27 18:33:33
我有一个类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
)DataGrids: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
在我的视图模型中ObservableCollection
所以我在这个绑定备忘单中找到了一个解决方案。
我建议在你的ViewModel中有一个SelectedBook属性,并将DataGrid A的选定项绑定到它。
SelectedItem = "{Binding SelectedBook}"
然后,将 DataGrid B 的 ItemsSource 设置为发布属性。
ItemsSource="{Binding SelectedBook, Path=Publications}"