0

需要一点帮助。在 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>

这是我想预设的结构,我知道如果我做一个三级深度网格这很容易,但是我有一个业务需求来拥有这种结构。

无论如何要在没有代码的情况下执行此操作,只需对内部网格进行相对源绑定

谢谢

4

1 回答 1

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 }">
于 2013-05-27T12:25:59.027 回答