我对WPF很新,我遇到了一个无法解决的问题。 有一个包含两个表T1和T2的数据集。 T1具有像这样的递归结构
T1Id
的ParentId
名称
和这段关系:
ds.Relations.Add("RecursiveRel",
tables["T1"].Columns["T1Id"],
tables["T1"].Columns["ParentId"]);
我通过将它绑定到DataView来在TreeView中显示该表:
DvT1 = ds.Tables[0].DefaultView;
DvT1.RowFilter = string.Format("Id = '{0}'", IdOfFirstRecord);
在XAML中:
<TreeView ItemsSource="{Binding DvT1}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding RecursiveRel}">
<TextBlock Text="{Binding Name}" />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
这样可以正常工作,并在树视图中很好地显示层次结构。
现在表T2发挥作用,具有这种结构:
T2ID T1Id 名称
T1和T2之间存在1:n关系,其中n> = 0.已在DataSet中添加了关系:
ds.Relations.Add("T1ToT2",
tables["T1"].Columns["T1Id"],
tables["T2"].Columns["T1Id"]);
T2正在使用DataGrid,它只应显示链接到当前所选T1记录的记录。 什么应该进入DataGrid的ItemsSource来实现这一目标?我还没有发现任何能做到这一点的事情。 我还应该注意,如果重要的话,这是一个MVVM应用程序,因此代码隐藏不是一种选择。
非常感谢任何帮助。
答案 0 :(得分:2)
你试过这个吗?
<DataGrid ItemsSource="{Binding SelectedItem.T1ToT2, ElementName=theTreeView}" />