当TabControl绑定到ViewModels时,WPF会变慢

时间:2011-06-05 19:57:47

标签: c# .net wpf mvvm data-binding

TabControl直接绑定到IEnumerable<ViewModelBase>(不同的ViewModel),使用DataTemplates呈现。切换标签时但是,可以看到TabItems被完全重绘,而且速度太慢了。这是正常的吗?

2 个答案:

答案 0 :(得分:2)

您的数据上下文是否真正公开IEnumerable<T>作为绑定源?如果是这样,我建议你看看How Data Binding References are Resolved。这不会明确解决重绘问题,但如果您使用支持INotifyPropertyChanged界面的集合(例如ObservableCollectionICollectionView数据源公开您的视图模型数据源,那么您将获得更好的绑定和渲染性能。

在本期重绘方面,您应该看一下this Dr. WPF post。有一个针对您所看到的性能问题的建议解决方案,为了更进一步,您将编写一个TabControl子类,并可能使用VirtualizingStackPanel作为自定义TabControl的项目源。

article介绍了您可能尝试的用户界面和数据虚拟化选项。

答案 1 :(得分:1)

我会说是的,DataTemplates是如何构造对象的蓝图,因此TabControl可能会抛出旧的选项卡内容,并在切换选项卡时创建一个新的选项卡内容。可能this question是相关的。

尽管人们之前抱怨过TabControl实际上可能会重用对象的行为,但我认为这可能取决于项目的基础类型