gpt4 book ai didi

c# - 在另一个 DataGrid 中绑定(bind) DataGrid 选定行

转载 作者:行者123 更新时间:2023-11-30 17:51:43 25 4
gpt4 key购买 nike

我有一个类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;}
}

在表单上有两个(假设有 AB)DataGrids:A 显示 Book 对象,B 显示所选书籍的 Publications 中的元素(即绑定(bind)到 A 中的所选行)。

问题是如何将 B 绑定(bind)到 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


所以我在this binding cheat sheet中找到了解决方法.

最佳答案

我建议在您的 ViewModel 中有一个 SelectedBook 属性并将 DataGrid A 的选定项绑定(bind)到它。

SelectedItem = "{Binding SelectedBook}"

然后,将 DataGrid B 的 ItemsSource 设置为 publications 属性。

ItemsSource="{Binding SelectedBook, Path=Publications}"

关于c# - 在另一个 DataGrid 中绑定(bind) DataGrid 选定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19122174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com