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;
            }
        }
    }
    
  • 相关阅读:
    程序员小抄大全
    赢在中国“80后30个忠告”
    Eclipse下python插件(pydev)的安装
    PDF加密文件的解密和打印
    中美欧联手打击僵尸网络 深化安全合作 狼人:
    入侵奥巴马帐号法国黑客自称是一个好黑客 狼人:
    Firefox 3.6.3版率先修复黑客大赛所曝漏洞 狼人:
    2009年全球安全SaaS市场收入比2008年增长70% 狼人:
    微软等厂商高管谈安全云面临的挑战 狼人:
    报告称Windows7不安全 管理员权限是罪魁祸首 狼人:
  • 原文地址:https://www.cnblogs.com/sjqq/p/8343335.html
Copyright © 2011-2022 走看看