gpt4 book ai didi

c# - 垂直合并 WPF DataGrid 中的单元格

转载 作者:行者123 更新时间:2023-11-30 16:00:45 25 4
gpt4 key购买 nike

我想在 WPF 中创建一个 DataGrid,其中一些单元格将“合并在一起”(如果它们相似的话)。

例子:

+---------+------+-----+
| Country | Name | Age |
+---------+------+-----+
| | Lisa | 24 |
+ +------+-----+
| Danmark | Per | 32 |
+ +------+-----+
| | Hans | 33 |
+---------+------+-----+
| Germany | Mick | 22 |
+---------+------+-----+

有没有什么方法可以使用绑定(bind)的 DataGrid 来实现这一点?

非常感谢。

最佳答案

此类场景的技巧是使用 CollectionViewSource 中形成的 Groups 作为 DataGridItemsSource。并且,使用 DataGrid 本身作为 ColumnCellTemplate

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;
}

这应该可以帮助您入门。

输出:

Vertical Grid Output

关于c# - 垂直合并 WPF DataGrid 中的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39748090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com