有没有可能对WPF Toolkit的DataGrid进行样式设计,以使数据记录跨越多行?商业控件的屏幕截图示例。
谢谢,
Ben
从截图来看,该控件通过将图片右侧每列的单元格分成多行,营造了跨行的假象。也许您可以用同样的方法实现您想要的跨行效果。
<tk:DataGrid AutoGenerateColumns="False">
<tk:DataGrid.Columns>
<tk:DataGridTextColumn Header="ID" Binding="{Binding ID}" />
<tk:DataGridTemplateColumn Header="Photo">
<tk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Source="{Binding Photo}" />
</DataTemplate>
</tk:DataGridTemplateColumn.CellTemplate>
</tk:DataGridTemplateColumn>
<tk:DataGridTemplateColumn>
<tk:DataGridTemplateColumn.Header>
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0">FirstName</TextBlock>
<TextBlock Grid.Row="1">LastName</TextBlock>
</Grid>
</tk:DataGridTemplateColumn.Header>
<tk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Text="{Binding FirstName}" />
<TextBlock Grid.Row="1" Text="{Binding LastName}" />
</Grid>
</DataTemplate>
</tk:DataGridTemplateColumn.CellTemplate>
</tk:DataGridTemplateColumn>
</tk:DataGrid.Columns>
</tk:DataGrid>
为了实现堆叠效果,您可以创建一个ListView或ListBox,在每个项目中输出一对垂直堆叠的GridViewRowPresenter控件,每个控件都绑定到单独的列集合。然后,在您自己的自定义标题(就在控件上方)中,您将使用一对GridViewHeaderRowPresenter控件执行相同的操作。