这是reversed
的一个交叉点,我无法成功应用建议的答案。
我的情况与源中描述的情况相同:我有2个数据表(1个带发票,1个行指定要开发票的行)在共享关系的数据集中,我还想显示那些数据表两个datagrids作为主 - 细节视图。
我已经研究过CreateChildView方法,但我在某个地方错过了一个关键点。我目前获取子视图的代码:
public DataView ChildView {
get {
return ParentChildRelation.ParentTable.DefaultView[0].CreateChildView("orders")
}
}
问题是双重的,首先我显然已经修改了索引,这意味着我总是得到父表的第一行的子视图。其次,当在父视图中选择新行时,我在获取新的子视图时失败了(ChildView仅在初始化时被调用)。
我的XAML:
<Grid>
<DataGrid
ItemsSource="{Binding Path=ParentView}"
AutoGenerateColumns="True"
Name="dataGrid1"
/>
<DataGrid
ItemsSource="{Binding Path=ChildView}"
AutoGenerateColumns="True"
Name="dataGrid2"
/>
</Grid>
我希望将其作为XAML解决方案,并避免编写更新子视图的事件处理程序。我曾尝试过使用DataContext,但却无处可去,有关如何利用数据集和关系来利用这种结构的文档非常简单(让我想知道我是否走上了正确的道路)。
我错过了语义,细节视图应该如何知道选择了哪个父项以及应该显示哪些项目。
答案 0 :(得分:0)
我还没有使用DataSet
很长一段时间,但是对于这样的主从细节场景,你可以试试
<DataGrid
ItemsSource="{Binding SelectedItem, ElementName=ParentDataGrid, Converter={...}}"/>
您将获得SelectedItem
作为父行,然后您可以对此行执行某些操作并构造/获取ICollection
以从IValueConverter
返回。