当前位置: 移动技术网 > IT编程>开发语言>.net > WPF DataGrid分组和排序

WPF DataGrid分组和排序

2018年09月12日  | 移动技术网IT编程  | 我要评论

足球小子飞毛腿,中秋彩信,观赏虾吧zadull

之前一直用的dev的gridcontrol,控件自带分组排序啥的。今天试了下在wpf自带的datagrid控件上实现分组和排序。

datagrid上实现这些功能主要用到collectionviewsource。collectionviewsource有对数据进行分组和排序过滤的功能。

        <collectionviewsource x:key="cvslist" source="{binding list}" 
                       >
            <collectionviewsource.groupdescriptions>
              
                <propertygroupdescription propertyname="b"/>
            </collectionviewsource.groupdescriptions>
            <collectionviewsource.sortdescriptions>
                <scm:sortdescription propertyname="b"  direction="descending"/>
                <scm:sortdescription propertyname="e"/>
                
            </collectionviewsource.sortdescriptions>
        </collectionviewsource>

将数据源绑定到collectionviewsource,并设置分组列和排序列。倒序可以设置direction属性为descending

 <datagrid itemssource="{binding source={staticresource cvslist}}"  />

将collectionviewsource绑定到datagrid,并设置datagrid的groupstyle,分组功能就可以使用了。

下面是我的例子

<window x:class="datagridtempalte.mainwindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:datagridtempalte"
      xmlns:scm="clr-namespace:system.componentmodel;assembly=windowsbase"
        mc:ignorable="d"
        title="mainwindow" height="450" width="800">
   
    <window.resources>

        <collectionviewsource x:key="cvslist" source="{binding list}" 
                       >
            <collectionviewsource.groupdescriptions>
              
                <propertygroupdescription propertyname="b"/>
            </collectionviewsource.groupdescriptions>
            <collectionviewsource.sortdescriptions>
                <scm:sortdescription propertyname="b" direction="descending"/>
                <scm:sortdescription propertyname="e"/>
                
            </collectionviewsource.sortdescriptions>
        </collectionviewsource>
    </window.resources>

    <grid>
        <datagrid itemssource="{binding source={staticresource cvslist}}" autogeneratecolumns="false">
            <datagrid.groupstyle>
                <groupstyle>
                    <groupstyle.containerstyle>
                        <style targettype="{x:type groupitem}">
                            <setter property="margin" value="0,0,0,5"/>
                            <setter property="template">
                                <setter.value>
                                    <controltemplate targettype="{x:type groupitem}">
                                        <expander isexpanded="true" background="#ff112255" borderbrush="#ff002255"   borderthickness="1,1,1,5"
                                                  >
                                            <expander.header>
                                                <dockpanel>
                                                    <textblock  foreground="white" fontweight="bold" text="{binding path=name}"/>
                                                </dockpanel>
                                            </expander.header>
                                            <expander.content>
                                                <itemspresenter />
                                            </expander.content>
                                        </expander>
                                    </controltemplate>
                                </setter.value>
                            </setter>
                        </style>
                    </groupstyle.containerstyle>
                </groupstyle>
            </datagrid.groupstyle>
            <datagrid.columns>
                <datagridcheckboxcolumn header="a" binding="{binding a}"/>
                <datagridtextcolumn  header="b" binding="{binding b}"/>
                <datagridtextcolumn  header="c" binding="{binding c}"/>
                <datagridtextcolumn  header="d" binding="{binding d}"/>
                <datagridtextcolumn  header="e" binding="{binding e}"/>
            </datagrid.columns>

        </datagrid>

    </grid>
</window>
view code

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网