WPF中ListView排序实现「建议收藏」

WPF中ListView排序实现「建议收藏」要实现ListView点击某一列进行排序,需要处理列点击事件<Windowx:Class=”ListViewSort.MainWindow”xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation”xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml”Title=”MainWindow”Height=”300″Width=”300″…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

要实现ListView点击某一列进行排序,需要处理列点击事件 

<Window x:Class="ListViewSort.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="300" Width="300" Loaded="Window_Loaded">
    <Grid>
        <ListView GridViewColumnHeader.Click="GridViewColumnHeader_Click" Margin="2" ItemsSource="{Binding Path=DataList}" >
            <ListView.View>
                <GridView>
                    <GridViewColumn  Header="ID" DisplayMemberBinding="{Binding ID}" />
                    <GridViewColumn  Header="Name" DisplayMemberBinding="{Binding Name}" />
                </GridView>
            </ListView.View>
        </ListView>
    </Grid>
</Window>

下面的代码支持ListView 多个列点击排序,并会记住点击过的每个列的排序方向 。

 private void GridViewColumnHeader_Click(object sender, RoutedEventArgs e) {
            ListView view = sender as ListView;
            if (view == null) {
                return;
            }
            if (e.OriginalSource is GridViewColumnHeader) {
                //获取点击列
                GridViewColumn clickedColumn = (e.OriginalSource as GridViewColumnHeader)?.Column;
                if (clickedColumn != null) {
                    //获取该列绑定的属性
                    string bindingProperty = (clickedColumn.DisplayMemberBinding as Binding)?.Path.Path;
                    if (bindingProperty == null) {
                        return;
                    }
                    SortDescriptionCollection sdc = view.Items.SortDescriptions;
                    ListSortDirection sortDirection = ListSortDirection.Ascending;
                    foreach (var sd in sdc) {
                        if (sd.PropertyName.Equals(bindingProperty)) {
                            //改变排序方向
                            sortDirection = (ListSortDirection) ((((int) sd.Direction) + 1) % 2);
                            //取得排序方向后,删除当前的SortDescription
                            sdc.Remove(sd);
                            break;
                        }
                    }
                    //添加新的SortDescription到SortDescriptions首位,使之生效
                    sdc.Insert(0,new SortDescription(bindingProperty, sortDirection));
                }
            }
        }

排序是根据列的类型来的,就ID列来说,int类型的排序结果是2,3,17,而如果你把该列
类型改为string,结果就会是17,2,3,如果你定义列的时候不加类型,默认是string,如
果是自定义类型,那么请继承IComparable接口,实现CompareTo方法。  

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/186456.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 第十五篇 Python之文件处理

    第十五篇 Python之文件处理一文件操作计算机系统分为:计算机硬件,操作系统,应用程序三部分。我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,众所周知,应

  • pycharm2018设置中文界面_pycharm界面

    pycharm2018设置中文界面_pycharm界面pycharm中文版界面设置:(推荐学习:python视频教程)jJ1少儿编程网-Scratch_Python_教程_免费儿童编程学习平台1、找到pycharm的文件安装位置jJ1少儿编程网-Scratch_Python_教程_免费儿童编程学习平台jJ1少儿编程网-Scratch_Python_教程_免费儿童编程学习平台2、找到语言文件应安装的文件夹jJ1少儿编程网-Scratch_Python_…

  • 解释器模式-破解算术验证码

    解释器模式-破解算术验证码给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。

  • 域名转接公告

    域名转接公告

  • 原码,反码,补码的深入理解与原理答案_原码反码补码例题详解

    原码,反码,补码的深入理解与原理答案_原码反码补码例题详解本文从原码讲起。通过简述原码,反码和补码存在的作用,加深对补码的认识。力争让你对补码的概念不再局限于:负数的补码等于反码加一。接触过计算机或电子信息相关课程的同学,应该都或多或少看过补码这哥仨。每次都是在课本的最前几页,来上这么一段:什么反码是原码除符号位,按位取反。补码等于反码加一。然后给整得莫名其妙,稀里糊涂地,接着就是翻页,反正后面的内容也跟三码没多大关系。我原来也是…

  • Java别说取余(%)运算简单,你真的会吗?

    Java别说取余(%)运算简单,你真的会吗?一,直击现场下面我来抛出几道题:说明m是商,n是余数;(1)正数%正数3%2=m…….n2%3=m…….n(2)正数%负数或者负数%正数-3%2=m…….n3%-2=m…….n-2%3=m…….n2%-3=m…….n(3)负数%负数-3%-2=m…….n-2%-3=m…….n二,验证时刻下面的结果没有商m只有余数n;有没有全部答对呢?没有的话来看总结吧

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号