Я пытаюсь создать эффект группировки в datagrid без необходимости использовать группировку, доступную с datagrid, поскольку это не позволяет мне показывать значения столбцов в строках заголовка, если я не " подделать его "и сделать все столбцы, которые я сделал ранее. У меня есть рабочий пример, где я могу получить datagrid, чтобы заполнить данные в другой строке datagrid rowdetailstemplate. Мой главный вопрос заключается в том, что я заметил, что внутренний datagrid не учитывает некоторые мои свойства, в частности FrozenColumnCount, который, когда я перемещаю scrollviewer внешнего datagrid, перемещается во внутренний datagrid, но не имеет замороженных столбцов.Datagrid внутри Datagrid RowDetailsTemplate
Вот код, и мы надеемся, что будет лучше продемонстрировать, что я делаю:
<DataGrid ItemsSource="{Binding DisplayRows}" AutoGenerateColumns="False" Grid.Row="1" FrozenColumnCount="1" >
<DataGrid.RowDetailsTemplate >
<DataTemplate>
<DataGrid AutoGenerateColumns="False" FrozenColumnCount="1" ItemsSource="{Binding DataContext.DisplayRows, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Timestamp, StringFormat=\{0:MMM dd\, yyyy HH:mm\}}" Header="Timestamp" Width="113" />
<DataGridTextColumn Header="HE1" Binding="{Binding Hours[0], StringFormat=\{0:#\,##0\}}" Width="50">
<DataGridTextColumn.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Style.Setters>
<Setter Property="Background" Value="{Binding Backgrounds[0]}" />
<Setter Property="TextBlock.TextAlignment" Value="Right" />
<Setter Property="HorizontalAlignment" Value="Stretch" />
</Style.Setters>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Timestamp, StringFormat=\{0:MMM dd\, yyyy HH:mm\}}" Header="Timestamp" Width="120" />
<DataGridTextColumn Header="HE1" Binding="{Binding Hours[0], StringFormat=\{0:#\,##0\}}" Width="50">
<DataGridTextColumn.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Style.Setters>
<Setter Property="Background" Value="{Binding Backgrounds[0]}" />
<Setter Property="TextBlock.TextAlignment" Value="Right" />
<Setter Property="HorizontalAlignment" Value="Stretch" />
</Style.Setters>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
Мой фактический проект имеет гораздо больше строк, но это упрощенная XML. Вот несколько фотографий, чтобы показать проблему, о которой я говорю.
Надеюсь кто-то может помочь мне с этим. Спасибо за помощь.
Я думаю, замороженные столбцы будут замораживать только при взаимодействии с ScrollViewer в DataGrid, которая принадлежит столбец. Вам нужно будет возиться с синхронизацией прокрутки-прокрутки datagrid, если вы хотите этого эффекта. – Shoe
Да, это похоже на случай. Я заметил, что если я даю максимальные размеры моему внутреннему datagrid, замороженный столбец определенно работает, но потом имеет собственный свиток. – Kohins