treeView的虚拟化怎样使用才有效果?

weixin_38066913 2016-10-24 07:01:54
本人wpf菜鸟。wpf知识是根据所要做的项目针对性学习的。知识可能有点散
TreeViewItem显示效果描述:
左边是小图片,右边是文字,显示的图片文件所在地址都是同一个地址,图片分辨率很小,大约30-40左右。
提问原因:
用button的click事件完成”往treeView绑定的泛型集合进行递归数据加载,使treeView能显示递归树的数据”,加载好了,然而却有另一个问题。加载慢。于是去网上看看有什么方法能解决。找到一个似乎看似简单的办法,在treeView加上这个VirtualizingStackPanel.IsVirtualizing="True"
代码感觉就可以解决,概念上叫虚拟化或可视化浏览。在treeView上写上此代码后,开启计时器代码编译时发现,跟没加的加载时间区别不大。
疑惑:
难道是虚拟化的使用方式不对导致的?还是绑定的数据集合的实体类设计不好?我的实体类大部分属性都是string类型,依赖属性只有一个,还有一个datetime类型和一个ImageSource类型,这个属性获取图片,并和image控件的Source属性绑定,是ImageSource类型的属性导致的吗?
去一些网站看了一些虚拟化。注意到这两个要点的某句话

VirtualizingPanel是需要和ScrollViewer一起使用的,没有ScrolViewer的话,所有控件都是可见的,谈不上虚拟化。需要注意的是,ItemsControl的默认Template没有ScrollViewer,在ItemsControl中使用VirtualizingPanel时,需要修改一下Template,加上ScrollViewer。 UI虚拟化是需要在不呈现所有的UI控件前提下知道当前视图下元素呈现效果的,如果所有的数据都转换了为控件的话,也就谈不上虚拟化了。也就是说,不能靠Measure和Arrange所有子元素来确定布局。

ScrollViewer我记得是滚动条吧。treeView好像自带有。Template没有ScrollViewer,需要修改一下Template,加上ScrollViewer?这句话是什么意思?需要在treeView中加上有关ScrollViewer的代码?

“如果所有的数据都转换了为控件的话,也就谈不上虚拟化了。”这句话表明是否可以表明:列表类控件绑定的数据集合中,多个数据转换为列表的item控件时的数量是可以控制的?用什么代码控制啊?系统自动控制的?
...全文
19 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复

476

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧