垂直合并 WPF DataGrid 中的单元格 [英] Merging cells in WPF DataGrid vertically
本文介绍了垂直合并 WPF DataGrid 中的单元格的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想在 WPF 中创建一个 DataGrid
,其中一些单元格将合并在一起",如果它们相似的话.
I want to make a DataGrid
in WPF, where some of the cells will "merge together", if they are alike.
示例:
+---------+------+-----+
| Country | Name | Age |
+---------+------+-----+
| | Lisa | 24 |
+ +------+-----+
| Danmark | Per | 32 |
+ +------+-----+
| | Hans | 33 |
+---------+------+-----+
| Germany | Mick | 22 |
+---------+------+-----+
有什么方法可以使用 DataGrid
使用绑定来实现这一点?
Is there any way to achieve this using DataGrid
using binding?
非常感谢.
推荐答案
此类场景的诀窍是使用 CollectionViewSource
中形成的 Groups
作为 ItemsSource<
DataGrid
的/code>.并且,使用 DataGrid
本身作为 Column
的 CellTemplate
.
Trick to such scenarios is to use the Groups
formed in CollectionViewSource
as the ItemsSource
of a DataGrid
. And, use a DataGrid
itself as the CellTemplate
of Column
.
Xaml
<Window.Resources>
<CollectionViewSource x:Key="CvsKey">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="Country"/>
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>
</Window.Resources>
<Grid>
<DataGrid x:Name="dg" Loaded="dg_Loaded" HorizontalScrollBarVisibility="Disabled" HeadersVisibility="All" Grid.Column="0" RowHeaderWidth="0" CanUserAddRows="False" AutoGenerateColumns="False" VerticalContentAlignment="Center" HorizontalContentAlignment="Center">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Country" Width="75">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<TextBlock VerticalAlignment="Center" Text="{Binding Name}"/>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Name" Width="75">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<DataGrid ItemsSource="{Binding Items}" IsReadOnly="True" AutoGenerateColumns="False" HeadersVisibility="None">
<DataGrid.Columns>
<DataGridTemplateColumn Width="*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>
DataGrid.Loaded 事件
private void dg_Loaded(object sender, RoutedEventArgs e)
{
var groups = (this.Resources["CvsKey"] as CollectionViewSource).View.Groups;
dg.ItemsSource = groups;
}
这应该会让你开始.
输出:
这篇关于垂直合并 WPF DataGrid 中的单元格的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文