我有一个使用ParentObject
作为其DataContext的控件。 ParentObject
有一个名为ChildObject
的属性可能会发生变化。如果是这样,ParentObject
会引发PropertyChanged事件。
该控件具有XAML,用于为ListView
的{{1}}属性中的项定义List
。当ChildObject
属性在ChildObject
中更改时,将重新创建整个视图,这意味着将实例化新控件。
ParentObject
实际上比下面的示例复杂得多,因此重新创建它是处理器密集型的,需要很长时间。
我的其他选择是什么?我可以为每个ListView
缓存整个ListView
吗?我该怎么做呢?
ChildObject
答案 0 :(得分:1)
listview正在创建新的控件,因为你的datatemplate。使用数据模板,您可以在数据实例与datatemplate内部的控件之间建立一对一的关系。您有几个选择:
1)您是否考虑过虚拟化?这只会呈现可见的内容。如果你有大量的对象,你肯定想考虑这个。
2)您是否考虑过重新设计视图模型以最小化集合中的更改?而不是在错误发生变化时随时添加/删除对象。重新使用集合中的对象,只在总计数发生变化时添加/删除。
我已经完成了这两项工作,以减缓视图模型对视图的更改。它们都显着提高了性能,但我在屏幕上有数百个对象。