C# WPF DataGrid 分组(Group)

效果如图,每个列的名字可以自定义。我随便用了”File”和”Attachment Name”。 
这里写图片描述

在Window的Resources里面设置Style, GroupHeaderStyle:

        <Style x:Key="GroupHeaderStyle" TargetType="{x:Type GroupItem}">
            <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type GroupItem}"> <Expander IsExpanded="True"> <Expander.Header> <TextBlock Text="{Binding Path=Name}"/> </Expander.Header> <ItemsPresenter /> </Expander> </ControlTemplate> </Setter.Value> </Setter> </Style>

把这个Style应用到DataGrid上面:

            <DataGrid.GroupStyle>
                <GroupStyle ContainerStyle="{StaticResource GroupHeaderStyle}"> <GroupStyle.Panel> <ItemsPanelTemplate> <DataGridRowsPresenter/> </ItemsPanelTemplate> </GroupStyle.Panel> </GroupStyle> </DataGrid.GroupStyle>

整体xaml文件:

<Window x:Class="DataGridGroupDeamon.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Window.Resources> <Style x:Key="GroupHeaderStyle" TargetType="{x:Type GroupItem}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type GroupItem}"> <Expander IsExpanded="True"> <Expander.Header> <TextBlock Text="{Binding Path=Name}"/> </Expander.Header> <ItemsPresenter /> </Expander> </ControlTemplate> </Setter.Value> </Setter> </Style> </Window.Resources> <Grid> <DataGrid x:Name="dataGrid1" AutoGenerateColumns="False" Margin="10"> <DataGrid.GroupStyle> <GroupStyle ContainerStyle="{StaticResource GroupHeaderStyle}"> <GroupStyle.Panel> <ItemsPanelTemplate> <DataGridRowsPresenter/> </ItemsPanelTemplate> </GroupStyle.Panel> </GroupStyle> </DataGrid.GroupStyle> <DataGrid.Columns> <DataGridTextColumn Header="File" Binding="{Binding Name}"/> <DataGridTextColumn Header="Attachment Name" Binding="{Binding Sex}"/> </DataGrid.Columns> </DataGrid> </Grid> </Window> 

数据准备文件:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using System.Collections.ObjectModel; using System.ComponentModel; namespace DataGridGroupDeamon { /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWindow : Window { ObservableCollection<Model> data = new ObservableCollection<Model>(); public MainWindow() { InitializeComponent(); dataGrid1.ItemsSource = data; for (int i = 0; i < 10; i++) { Model m = CreateModel("张" + i, i / 2 + "年级", (i % 2 == 0 ? "女" : "男")); data.Add(m); } ICollectionView vw = CollectionViewSource.GetDefaultView(data); vw.GroupDescriptions.Add(new PropertyGroupDescription("Category")); } private Model CreateModel(string name, string cate, string sex) { Model model = new Model(); model.Name = name; model.Category = cate; model.Sex = sex; return model; } } public class Model { public string Name { get; set; } public string Category { get; set; } public string Sex { get; set; } } } 

 

转载于:https://www.cnblogs.com/sjqq/p/8343335.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值