我有一个直接绑定到IEnumerable<ViewModelBase>
(不同的ViewModels)的TabControl
,使用DataTemplates
渲染。 但是当切换选项卡时,可以看到TabItems
完全被重新绘制,速度非常慢。这正常吗?
我有一个直接绑定到IEnumerable<ViewModelBase>
(不同的ViewModels)的TabControl
,使用DataTemplates
渲染。 但是当切换选项卡时,可以看到TabItems
完全被重新绘制,速度非常慢。这正常吗?
IEnumerable<T>
暴露为绑定源?如果是的话,我建议您查看一下如何解析数据绑定引用。 这不会明确地解决重新绘制问题,但是如果您使用支持 INotifyPropertyChanged 接口的集合(例如ObservableCollection或ICollectionView数据源)公开视图模型的数据源,则可以获得更好的绑定和渲染性能。
在解决重新绘制问题方面,您应该查看此 Dr. WPF 帖子。 有一个提出的解决方案,可以解决您看到的性能问题,如果进一步,您将编写TabControl的子类,并可能使用VirtualizingStackPanel作为自定义TabControl的项源。
这篇文章涵盖了您可以尝试的 UI 和数据虚拟化选项。
DataTemplates
有多复杂?您是否在DataTemplate
中包含所有内容,或者DataTemplate
只包含一个UserControl
并用于将其与 ViewModel 匹配? - Joel B Fant