Вы можете использовать ItemsControl с сеткой в качестве панели, а затем, в ItemTemplate, использовать другой ItemsControl и связать его со вторым уровнем данных с помощью другой сетки. Используя ItemsControl, вы можете контролировать то, как все отображается, гораздо больше, чем просто сетка.
Если вам нужно что-то похожее на это:
![Multi-level Binding](https://i.stack.imgur.com/H2yUE.jpg)
Вот как вы можете сделать это:
- Добавление многоуровневого примера источника данных в проект Blend
- Добавить ItemsControl в корневой элемент макета
- Свяжите свойство ItemsControl.ItemsSource с родительским уровнем
- Создайте пустой шаблон элемента, используя эту опцию:
![Item Template/Create Empty](https://i.stack.imgur.com/MLMb9.png)
В шаблоне элемента создайте структуру, которую вы хотите иметь на втором уровне. В моем примере структура выглядит следующим образом:
![DataTemplate Structure](https://i.stack.imgur.com/ruE9C.jpg)
- Свяжите каждый из дочерних элементов со свойствами в элементах родительской коллекции, такими как заголовок сетки.
- Свяжите DataGrid внутри элемента с дочерней коллекцией.
Конечным результатом будет список элементов, и каждый элемент будет содержать StackPanel, границу с TextBlock внутри и DataGrid, привязанный к дочерним данным.
XAML для этого примера выглядит следующим образом:
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:SampleData="clr-namespace:Expression.Blend.SampleData.SampleDataSource" xmlns:System="clr-namespace:System;assembly=mscorlib" xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" mc:Ignorable="d"
x:Class="ASD_Answer005.MainPage" d:DesignWidth="703" d:DesignHeight="435">
<UserControl.Resources>
<SampleData:SampleDataSource x:Key="SampleDataSource" d:IsDataSource="True"/>
<DataTemplate x:Key="ChildDataTemplate">
<StackPanel Orientation="Vertical">
<Border BorderThickness="0,0,0,2" BorderBrush="Black" Padding="5">
<TextBlock TextWrapping="Wrap" Text="{Binding CategoryName}" FontSize="26.667" Height="39"/>
</Border>
<sdk:DataGrid ItemsSource="{Binding ChildCollection}" BorderThickness="0"/>
</StackPanel>
</DataTemplate>
</UserControl.Resources>
<d:DataContext>
<Binding Source="{StaticResource SampleDataSource}"/>
</d:DataContext>
<UserControl.DataContext>
<Binding Source="{StaticResource SampleDataSource}"/>
</UserControl.DataContext>
<Grid x:Name="LayoutRoot" Background="White">
<ScrollViewer HorizontalAlignment="Left" VerticalAlignment="Top" BorderThickness="0" Padding="0">
<StackPanel Orientation="Vertical" Width="703">
<ItemsControl ItemsSource="{Binding ParentCollection}" ItemTemplate="{StaticResource ChildDataTemplate}"/>
</StackPanel>
</ScrollViewer>
</Grid>
</UserControl>
Надеюсь, это поможет.