【发布时间】:2012-08-30 16:09:45
【问题描述】:
我有一个使用ParentObject 作为其DataContext 的控件。 ParentObject 有一个名为 ChildObject 的属性,该属性可能会发生变化。当它发生时,ParentObject 引发 PropertyChanged 事件。
该控件使用 XAML 为 ChildObject 的 List 属性中的项目定义 ListView。当ChildObject 中的ChildObject 属性发生变化时,会重新创建整个视图,这意味着实例化了新控件。
ListView 实际上比下面的示例复杂得多,因此重新创建它是处理器密集型的并且需要很长时间。
我还有哪些其他选择?我可以为每个ChildObject 缓存整个ListView 吗?我该怎么做呢?
<ListView ItemsSource="{Binding ParentObject.ChildObject.List}">
<ListView.View>
<GridView>
<GridViewColumn Header="Error">
<GridViewColumn.CellTemplate>
<DataTemplate>
<local:ErrorControl DataContext="{Binding ErrorCollection}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
【问题讨论】:
-
是渲染耗时还是创建列表耗时?