通过VS的性能诊断,最终确定的耗时过程锁定在了Popup.isOpen = true这一语句上。
该句导致了Listbox的创建。然而,VS的诊断无法再继续深入了。
这个句子导致用户输入必须等候Popup弹窗完成,造成了十分尴尬的体验。我曾试图通过线程等方式去解决它,效果并不好。
最终的解决方法却有些让我意外。
在主管的帮助下(我实在太拖拉了。。。),我们去看了这个空间的Datatemplate定义,试图通过简化它来提高效率。然而即使简化到只剩一个TextBox,效率仍旧不高。
这个时候,一个无心(或者经验?)的尝试,让我们发现了突破口。我们试图取消不通过绑定,而是使用固定的数据来显示ListBox,并随手替换为TextBlock,耗时直接变为五分之一。
接下来又尝试了几次,结果发现,导致效率差别的其实是TextBox和TextBlock两个控件。
我们选择控件时,应该尽量使用能满足条件的最简单的。