zoukankan      html  css  js  c++  java
  • 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;
            }
        }
    }
    
  • 相关阅读:
    C#中回滚TransactionScope的使用方法和原理
    CAS5.3服务器搭建与客户端整合SpringBoot以及踩坑笔记
    JSON对象、JSON字符串和Java对象互相转
    Java实体类如何映射到json数据(驼峰映射到json中的下划线)
    expected at least 1 bean which qualifies as autowire candidate
    IDEA target中没有class文件/target中有class没有yml文件/yml文件不显示叶子
    yml配置从nacos配置中心取数据(单个或多个),读读源码,寻找如何配置多个
    seata-server 1.3.0整合nacos,使用nacos做注册和配置中心
    简单读读源码
    mybatis-plus.global-config.db-config.id-type=auto 和 @TableId(value = "id", type = IdType.ASSIGN_ID)哪个优先生效
  • 原文地址:https://www.cnblogs.com/sjqq/p/8343335.html
Copyright © 2011-2022 走看看