需要一些帮助。 在XAML中,我有以下布局:
<DataGrid Name="outerGrid" ItemsSource="{Binding fullData}">
<DataGrid.Columns>
<DataGridTextColumn Header="Something" Binding="{Binding something}" />
</DataGrid.Columns>
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<DataGrid Name="innerData" ItemsSource="{Binding innerData}">
<DataGrid.Columns>
<DataGridTextColumn Header="Something" Binding="{Binding something}" />
</DataGrid.Columns>
</DataGrid>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
</DataGrid>
<DataGrid Name="fullDetailGrid" ItemsSource="{Binding ??????? }">
<DataGrid.Columns>
<DataGridTextColumn Header="Something" Binding="{Binding something}" />
</DataGrid.Columns>
</DataGrid>
这是我想预设的结构,我知道如果我做一个三级深度网格,这很容易,但我有业务要求有这种结构。
无论如何都要在没有代码的情况下执行此操作,只需执行内部网格的亲属源绑定
谢谢
答案 0 :(得分:2)
我遇到了类似的问题,其中我的一个父控件的ItemsSource已绑定到我的ViewModel中的一个属性(绑定到DataContext),但我需要完整的ViewModel绑定到另一个属性那里。然后它具有以下语法(在xaml中):
<TextBlock Text="Documents" Visibility="{Binding ElementName=PageRoot, Path=DataContext.IsVisible }" />
正如您所看到的,我将项目绑定到PageRoot(DataContext已绑定到ViewModel的位置),然后将其指向我的布尔值,指示可见性(显然有转换器,但我为了阅读目的删除了它)
出于您的目的:您可以尝试将fullDetailGrid的ItemsSource绑定到innerData源(尽管您可能使用x:Key而不是Name来定义该元素)。然后,您可以将其指向包含fullDataGrid所需值的属性。语法将或多或少以下(假设您将在嵌套数据网格上使用x:Key innerData):
<DataGrid Name="fullDetailGrid" ItemsSource="{Binding ElementName=innerData, Path=YourDataContext.YourCollection }">