ObservableCollection本身是没有排序Sort功能的,不过我们可以通过冒泡排序来实现,以下是扩展功能:

public static void Sort<T>(this ObservableCollection<T> collection, IComparer<T> comparer)
{
if (collection == null || collection.Count == ) return; int i, j;
T index;
for (i = ; i < collection.Count; i++)
{
index = collection[i];
j = i;
while ((j > ) && (comparer.Compare(collection[j - ], index) == ))
{
collection[j] = collection[j - ];
j = j - ;
}
collection[j] = index;
}
}

这个方法在win7上运行没有问题,排序功能可以正常运行

在win10上排序能正常运行,但是如果是将ObservableCollection绑定到树结构上时,执行排序操作会对展开的树进行收起操作。

就是一个树在展开的时候子节点进行排序,当排序完成后,这棵树会自动收起,不知道什么原因,完全是控件自动处理的。

后面想了一下是不是扩展的排序的方法造成了影响,后面索性就换了一个方法,直接使用ObservableCollection自带的move功能,如下:

public static void Sort<T>(this ObservableCollection<T> collection, IComparer<T> comparer)
{ if (collection == null || collection.Count <= ) return; var lst = collection.ToList();
lst.Sort(comparer);
var count = collection.Count;
for (int m = ; m < count; m++)
{
var dex = collection.IndexOf(lst[m]);
if (dex == m) continue;
collection.Move(dex, m);
}
}

使用新的方法后,排序的时候树就不会自动收缩了。

至于为什么之前的排序方法不行,还需要以后慢慢研究。

win10 ObservableCollection 排序自动收缩问题的更多相关文章

  1. 《SQL Server企业级平台管理实践》读书笔记——SQL Server如何设置自动增长和自动收缩项

    SQL Server允许用户设置数据库初始值和最大值,可以通过自动增长或者自动收缩进行配置.通过这些配置,我们可以防止数据库空间问题而导致的应用程序修改失败或者SQL Server磁盘空间耗尽的事情发 ...

  2. 基于jquery打造的网页右侧自动收缩浮动在线客服代码

    基于jquery打造的网页右侧自动收缩浮动在线QQ客服代码, 当前比较流行的一款QQ在线jquery特效代码, 代码中还带有IE6下PNG图片透明的特效,如果想研究IE6下PNG透明的同学也可以下载研 ...

  3. JS+CSS打造三级折叠菜单,自动收缩其它级 js

    <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="C ...

  4. Win10电脑经常自动掉线、自动断网的解决方法

    近期一客户称自己使用电脑上网的时候,过一段时间莫名其妙的出现自动掉线.自动断网的情况,那么遇到这个问题该怎么办?下面装机之家分享一下Win10电脑经常自动掉线.自动断网的解决方法,以Win7系统为例. ...

  5. k8s HPA自动收缩

    HPA自动收缩 autoscale 自动调整一个 Deployment, ReplicaSet, 或者 ReplicationController 的副本数量 #创建一个replicaset测试 [r ...

  6. 使用参数innodb_file_per_table支持MySQL InnoDB表数据共享空间自动收缩

    http://heylinux.com/archives/2367.html http://blog.csdn.net/ywh147/article/details/8996022 使用过MySQL的 ...

  7. VS.Net开发必备,让您的代码自动收缩,如何实现!

    一年前,不知在哪里看到这个开发辅助插件,就装上了,之后一直不知不觉得用着,有一天重装了系统,这插件不见了,再也记不起他的名字, 在网上搜索"自动收缩代码","VS开发必备 ...

  8. sql server 2000 自动收缩数据库大小

    转载.......http://mars968.blog.163.com/blog/static/7400033200941642356258/ SQLServer2000压缩日志及数据库文件     ...

  9. Win10如何关闭自动更新服务

    原文:Win10如何关闭自动更新服务 第一步: 小娜搜索"gpedit.msc",进入本地计算机策略设置. 第二步: 找到策略位置:本地计算机策略-计算机配置-管理模板-Windo ...

随机推荐

  1. nstall-Package : 无法找到程序包“MySql.Data.Entity.EF6”

    在vs2013中用MySQL+EF6时,会遇到版本的问题,解决方法一般如下: 1 Install-Package EntityFramework -Version 6.0.0然后Enter2 Inst ...

  2. mongo 介绍

    [介绍]:MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.在高负载的情况下,添加更多的节点,可以保证服务器性能.MongoDB 旨在为WEB应用提供可扩展的高性能数据存 ...

  3. 初学shell,今天遇到由wget下载到本地的网页源代码的乱码问题,无聊的写了一个转码的脚本

    今天用wget想下载文件,结果下载了一堆本地的index.html文件,一查看全是乱码,然后百度了一下,网页的编码格式大概有三种: 1.utf-8 2.gb2312 3.gbk 要在网页源码中的< ...

  4. ubuntu 安装codeblocks

    本文转载于:http://blog.csdn.net/i_fuqiang/article/details/9749225 1.安装gcc: sudo apt-get install build-ess ...

  5. LRM-00109: could not open parameter file

    SQL>startup                                                                                       ...

  6. MySQL——sql语句的执行顺序

    #核心知识点: 书写顺序:where——>group by——>having——>order by——>limit 许多时候在书写一些复杂的sql语句的时候,尤其是在渐进式推导 ...

  7. nodejs 基础篇整合

    nodeJs 基础篇整合 最近有朋友也想学习nodeJs相关方面的知识,如果你是后端想接近前端,node作为一门跑在服务端的JS语言从这里入门再好不过了.如果你正好喜欢前端,想走的更高,走的更远.no ...

  8. Storm worker 并行度等理解

    Storm 调优是非常重要的, 仅次于写出正确的代码, 好在Storm官网上有关于worker executors tasks的介绍, http://storm.incubator.apache.or ...

  9. 分享知识-快乐自己:SpringMvc中的单多文件上传及文件下载

    摘要:SpringMvc中的单多文件上传及文件下载:(以下是核心代码(拿过去直接能用)不谢) <!--设置文件上传需要的jar--> <dependency> <grou ...

  10. codeforces 658B B. Bear and Displayed Friends(优先队列)

    题目链接: B. Bear and Displayed Friends time limit per test 2 seconds memory limit per test 256 megabyte ...