我正在尝试创建在数据网格中进行分组的效果,而不必使用数据网格可用的分组,因为这不会让我在标题行上显示列值,除非我“伪造它”和我自己以前做过所有的专栏。我有一个工作示例,我可以在其中获取数据网格以填充另一个数据网格的rowdetailstemplate中的数据。我的主要问题是我注意到内部数据网格不尊重我的一些属性,特别是FrozenColumnCount,当我移动外部数据网格的scrollviewer时,内部数据网格移动但没有冻结列。
以下是一些代码,希望能够更好地展示我正在做的事情:
<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。这是一些图片,以显示我正在谈论的问题。
希望有人可以帮我解决这个问题。谢谢你的帮助。
答案 0 :(得分:1)
我认为层次结构数据网格的最佳方法是使用本文的方法: http://blogs.perpetuumsoft.com/silverlight/how-to-turn-silverlight-datagrid-to-treegrid-in-15-minutes/