Я создал вложенную сетку в XAML, который в настоящее время выглядит следующим образом:XAML Привязка данных в вложенной сетке
<Grid x:Name="mainGrid" >
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid Grid.Row="{Binding Row}" Grid.Column="{Binding Col}">
<Grid.RowDefinitions>
<RowDefinition Height="0.1*"/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock Text="{Binding Title}" VerticalAlignment="Bottom" HorizontalAlignment="Center" Grid.Row="0" FontWeight="Bold" TextDecorations="Underline"/>
<ListView ItemsSource="{Binding Names}" Grid.Row="1"/>
</Grid>
</Grid>
Моя цель состоит, чтобы заполнить 4 Grids
, которые следуют шаблон внутренней Grid
. Я попытался это, используя следующий код позади:
List<Test> tests = new List<Test>();
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 2; j++)
{
Test t = new Test();
t.Title = i + "\t" + j;
t.Row = i;
t.Col = j;
tests.Add(t);
}
}
mainGrid.DataContext = tests;
и определение класса:
class Test
{
public string Title { get; set; }
public int Row { get; set; }
public int Col { get; set; }
public ObservableCollection<string> Names
{
get
{
return new ObservableCollection<string>() { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J"};
}
}
}
Мои мысли здесь были, что я должен был бы 4 объекта с определениями/Col Row для каждого сегмента внешнее определение Grid
(0,0 & 0,1 & 1,0 & 1,1). Внутренний Grid
будет служить шаблоном, как ItemTemplate
в ListView
. Однако заполняется только верхний (0,0) Grid
.
Какие шаги следует предпринять, чтобы внутренний Grid
вел себя как шаблон и все 4 Grids
созданы и заполнены?
Возможно, вы рассмотрели возможность использования элемента ItemsControl в основном с вашей текущей внутренней сеткой в качестве шаблона элемента и текущей внешней сетки в качестве шаблона ItemContainer и подачи вашей коллекции через источник данных. –