WPF 札记
2024-08-31 04:45:29
今天在工程中发现了一个非常消耗CPU资源的过程---一个创建Popup并根据绑定的Collection填充ListBox的过程。
通过VS的性能诊断,最终确定的耗时过程锁定在了Popup.isOpen = true这一语句上。
该句导致了Listbox的创建。然而,VS的诊断无法再继续深入了。
这个句子导致用户输入必须等候Popup弹窗完成,造成了十分尴尬的体验。我曾试图通过线程等方式去解决它,效果并不好。
最终的解决方法却有些让我意外。
在主管的帮助下(我实在太拖拉了。。。),我们去看了这个空间的Datatemplate定义,试图通过简化它来提高效率。然而即使简化到只剩一个TextBox,效率仍旧不高。
这个时候,一个无心(或者经验?)的尝试,让我们发现了突破口。我们试图取消不通过绑定,而是使用固定的数据来显示ListBox,并随手替换为TextBlock,耗时直接变为五分之一。
接下来又尝试了几次,结果发现,导致效率差别的其实是TextBox和TextBlock两个控件。
我们选择控件时,应该尽量使用能满足条件的最简单的。
最新文章
- NLP点滴——文本相似度
- Integer.parseInt 引发的血案
- language model —— basic model 语言模型之基础模型
- fopen中r+和w+的区别
- iOS设置导航栏标题
- java 获取classpath下文件多种方式
- c++重载运算符注意
- 【Todo】【读书笔记】大数据Spark企业级实战版 &; Scala学习
- SRF之数据验证
- SDWebImage 在多线程下载图片时防止错乱的策略
- layout_gravity与gravity的区别
- 简单的QT绘图程序(把全部的点都记录下来,然后在paintEvent里使用drawLine函数进行绘制,貌似效率很低。。。)
- ubuntu 文件readonly的问题: W10: Warning: Changing a readonly file 解决办法
- Pompholyx - Causes, Symptoms and Treatment
- char和unsigned char--数据类型区别
- js如何获取url参数
- 洛谷P2762 太空飞行计划问题
- 【杂谈】对IO与NIO的认识
- 模块移除 命令rmmod 的实现
- go标准库DOC与 raft