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. python scrapy爬虫框架

    http://scrapy-chs.readthedocs.io/zh_CN/0.24/intro/tutorial.html scrapy 提取html的标签内容 from scrapy.selec ...

  2. oc中 中文到拼音的转换

    偶然发现的一个好玩的功能

  3. TP框架部分---空控制器

    <?php namespace Admin\Controller; use Think\Controller; class DengLuController extends Controller ...

  4. 2-phase-commit 3-phase-commit

    2 prepare commit rollback acknowledge

  5. 双缓冲类里的OnPaint与OnSize,以及构造函数的关系

    代码摘自wx\lib\agw\knobctrl.py一点体会是,OnSize作为class的函数,被放在构造函数里执行,会先于OnPaint执行.测试结果是,初始启动后,会执行8次OnSize(为什么 ...

  6. Java图像处理最快技术:ImageJ 学习第一篇

    ImageJ是世界上最快的纯Java的图像处理程序. 它能够过滤一个2048x2048的图像在0.1秒内(*). 这是每秒40万像素!ImageJ的扩展通过使用内置的文本编辑器和Java编译器的Ima ...

  7. 【shell】获取第10+个位置参数

    转载自:http://www.cnblogs.com/sheldonxu/archive/2012/06/25/2560770.html 在Shell脚本中,可以用$n的方式获取第n个参数,例如,一个 ...

  8. Java for LeetCode 124 Binary Tree Maximum Path Sum

    Given a binary tree, find the maximum path sum. The path may start and end at any node in the tree. ...

  9. SpringBoot学习笔记(11):使用WebSocket构建交互式Web应用程序

    SpringBoot学习笔记(11):使用WebSocket构建交互式Web应用程序 快速开始 本指南将引导您完成创建“hello world”应用程序的过程,该应用程序在浏览器和服务器之间来回发送消 ...

  10. 20145239 杜文超 实验四 Android开发基础

    20145239实验四 Android开发基础 实验内容 基于Android Studio开发简单的Android应用并部署测试 了解Android组件.布局管理器的使用 掌握Android中事件处理 ...