WPF界面开发必备技能!TreeListView - 如何快速更新多个项目属性
DevExpress广泛应用于ECM企业内容管理、 成本管控、进程监督、生产调度,在企业/政务信息化管理中占据一席重要之地。通过DevExpress WPF Controls,您能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件的衍伸产品,还是以数据为中心的商业智能产品,都能通过该控件来实现。
本文主要为大家介绍在TreeListView中如何快速的更新多个项目的属性。在接下来的系列文章中,小编将为大家介绍一些DevExpress WPF控件的使用技巧和提示,希望能帮助到大家!
问题:
在更新100 000树列表项的属性时,性能比较差。即使从treelist.ItemsSource属性中删除数据源,TreeList仍会处理PropertyChanged事件,并使性能较差。接下来,尝试在性能分析器中检查结果:
- BeginDataUpdate() / end - 没有效果,但是DX PropertyChanged处理仍然是瓶颈;
- BeginInit() / end - 同样的问题;
- ItemsSource = null - DXTree仍处理已删除项目的PropertyChanged;
- 删除tree branch - DXTree仍处理已移除项目的PropertyChanged;
- 停止提高PropertyChanged并最终重置ItemsSource - 获得了100倍的性能提升,但是丢失视图状态,这样的解决方案非常粗糙。
解决方案:
TreeListView的内部控制器由于BeginDataUpdate / EndDataUpdate方法调用而不会更新其排序和筛选,但仍可跟踪属性更改。要临时冻结更新而不丢失TreeListView的状态,可以使用BindingList<T>集合,该集合可让您临时取消事件。
//private ObservableCollection<FakeItem> list = new ObservableCollection<FakeItem>();
private BindingList<FakeItem> list = new BindingList<FakeItem>();
private void Update1()
{
tree.BeginDataUpdate();
list.RaiseListChangedEvents = false;
foreach (var fakeItem in list)
{
fakeItem.Checked = true;
}
list.RaiseListChangedEvents = true;
tree.EndDataUpdate();
}
DevExpress·1024程序员节火热开启!致敬改变世界的程序猿!
DevExpress中文网官网QQ群:540330292 欢迎一起进群讨论
扫描关注DevExpress中文网微信公众号,及时获取最新动态及最新资讯

WPF界面开发必备技能!TreeListView - 如何快速更新多个项目属性的更多相关文章
- (私人收藏)[开发必备]HTML5最全快速查找离线手册(可查询可学习,带实例)
[开发必备]HTML5最全快速查找离线手册(可查询可学习,带实例) HTML5最全快速查找离线手册:https://pan.baidu.com/s/19seE8TJQSx4IsWgXtKQS0Aj9y ...
- 准备.Net转前端开发-WPF界面框架那些事,UI快速实现法
题外话 打开博客园,查看首页左栏的”推荐博客”,排名前五的博客分别是(此处非广告):Artech.小坦克.圣殿骑士.腾飞(Jesse).数据之巅.再看看它们博客的最新更新时间:Artech(2014- ...
- WPF界面开发技巧大放送!DevExpress WPF在TreeListView中扩展N级
DevExpress广泛应用于ECM企业内容管理. 成本管控.进程监督.生产调度,在企业/政务信息化管理中占据一席重要之地.通过DevExpress WPF Controls,您能创建有着强大互动功能 ...
- VCL界面开发必备装备!DevExpress VCL v19.1.7你值得拥有
DevExpress VCL Controls是 Devexpress公司旗下最老牌的用户界面套包.所包含的控件有:数据录入,图表,数据分析,导航,布局,网格,日程管理,样式,打印和工作流等,让您快速 ...
- VCL界面开发必备装备!DevExpress VCL v19.1.5你值得拥有
DevExpress VCL Controls是 Devexpress公司旗下最老牌的用户界面套包.所包含的控件有:数据录入,图表,数据分析,导航,布局,网格,日程管理,样式,打印和工作流等,让您快速 ...
- linux后台开发必备技能
一.linux和os: 1.命令:netstat tcpdump ipcs ipcrm 这四个命令的熟练掌握程度基本上能体现实际开发和调试程序的经验 2.cpu 内存 硬盘 等等与系统性能调试相关的 ...
- WPF界面开发技巧大放送!DevExpress WPF格式化日期时间值
DevExpress广泛应用于ECM企业内容管理. 成本管控.进程监督.生产调度,在企业/政务信息化管理中占据一席重要之地.通过DevExpress WPF Controls,您能创建有着强大互动功能 ...
- WPF界面开发:DevExpress WPF在GridControl中固定行时处理时刻
DevExpress广泛应用于ECM企业内容管理. 成本管控.进程监督.生产调度,在企业/政务信息化管理中占据一席重要之地.通过DevExpress WPF Controls,您能创建有着强大互动功能 ...
- Java开发必备技能!Eclipse快捷方式助力提升开发效率
插件开发快捷方式 注意:包括org.eclipse.pde.runtime插件,用于Plug-in Spy功能. Shift + Alt + F1—Plug-in Selection Spy. Shi ...
随机推荐
- 神奇的负margin解决border“合并”
如上图所示,这是一个分页样式,a:hover时,需要改变边框的颜色. 我们知道,除表格之外,其他标签的border是不能合并的.要解决这个问题,思路有三: 1.table布局(大概很少有人愿意在这里使 ...
- hadoop集群搭建及易踩坑收录
配置前先把域名映射配好哈 详情参考我的其他随笔(哪里不通可以在下方评论) 下载好hdfs.tar.gz 后 在/home/ldy下 mkdir apps/ tar -xzvf hdfs.tar.gz ...
- PAT B1042 挖掘机哪家强
AC代码 #include <cstdio> #include <algorithm> using namespace std; const int max_n = 11000 ...
- Ruby Rails学习中:登陆
登陆 一. Sessions 控制器 登录和退出功能由 Sessions 控制器中相应的 REST 动作处理 : 登录表单在 new 动作中处理, 登录的过程是向 create 动作发送 POST 请 ...
- Python格式化输出的三种方式
Python格式化输出的三种方式 一.占位符 程序中经常会有这样场景:要求用户输入信息,然后打印成固定的格式比如要求用户输入用户名和年龄,然后打印如下格式:My name is xxx,my age ...
- 怎样在 Vue 的 component 组件中使用 props ?
1. 在注册一个组件时, 添加一个 props 属性, 将需要添加的 props 作为数组的元素进行添加, 比如下面的例子中, 我们添加了一个变量 name , 他就是一个 props, 我们可以通过 ...
- MVC4学习要点记四
一.使用原生SQL使用EF的一个优点就是自动帮我们生成SQL,这在常规情况下很方便,但有些情况下用EF却不适合.另外还有些特别复杂的语句,利用EF很难生成.所以,EF提供一组方法用来执行原生的SQL. ...
- Google谷歌总部员工家庭活动
每年Google总部都会有针对家庭的两个大活动,其中一个就是万圣节.专门针对员工孩子的.#2019Googleween 今年的Googleween分几个场地,所以每个场地很小.她爸爸只带她去了一个.我 ...
- cube打包后css顺序错误
先说下解决办法: 把import {...} from cube-ui放在 import App from './App.vue'的前面 不然会产生如下错误 正确的顺序
- Mac之常见问题
1. 在命令行下无法使用ll命令 需要设置命令的别名. 文件位置:-/.bash_profile source ~/.profile export PATH="/usr/local/opt/ ...