Я хочу создать сетку данных с автоматически сгенерированными столбцами.Заголовок должен содержать 6 строк (TextBlocks). Поскольку каждая запись содержит массив данных, я перебираю этот массив и добавляю столько столбцов, сколько требуется.Как применить шаблон данных к заголовку и связать его с массивом с помощью индекса.Этот подход очень хорошо работал в WPF, но я не нашел способа создать его в UWP.
Вот что у меня есть:
<Style x:Key="HeaderCellTemplate" TargetType="localprimitives:DataGridColumnHeader">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="localprimitives:DataGridColumnHeader">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock x:Name="Header1" Text="hi there" Grid.Column="0" Grid.Row="0"/>
<TextBlock x:Name="Header2" Grid.Column="0" Grid.Row="1" />
<TextBlock x:Name="Header3" Grid.Column="0" Grid.Row="2"/>
<TextBlock x:Name="Header4" Grid.Column="0" Grid.Row="3"/>
<TextBlock x:Name="Header5" Grid.Column="0" Grid.Row="4"/>
<TextBlock x:Name="Header6" Grid.Column="0" Grid.Row="5"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
А вот AutoGenerateColumnОбработчик
public void AutoGenerateColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
if (e.PropertyName == "PlanData")
{
GenerateDataColumns();
e.Cancel = true;
}
}
private void GenerateDataColumns()
{
_headerTemplate = Application.Current.Resources[HeaderTemplateKey] as Style;
for (int c = 0; c < _numberOfDataColumns; c++)
{
var column = new DataGridTextColumn();
column.HeaderStyle = _headerTemplate;
//how to do binding in header cells?
_grid.Columns.Add(column);
_grid.ApplyTemplate();
}
}