TabControl绑定到ViewModels时,WPF速度变慢

本文关键字:WPF 速度 绑定 ViewModels TabControl | 更新日期: 2023-09-27 17:58:23

我将TabControl直接绑定到IEnumerable<ViewModelBase>(不同的ViewModel),使用DataTemplates进行渲染 但是当切换选项卡时,可以看到TabItems被完全重新绘制,而且速度太慢了。这正常吗???

TabControl绑定到ViewModels时,WPF速度变慢

您的数据上下文真的将IEnumerable<T>公开为绑定源吗?如果是这样的话,我建议您看看如何解析数据绑定引用。这不会明确解决重绘问题,但如果使用支持INotifyPropertyChanged接口的集合(如ObservableCollection或ICollectionView数据源)公开视图模型数据源,则可以获得更好的绑定和渲染性能。

在这个问题的重绘方面,你应该看看WPF博士的这篇文章。对于您所看到的性能问题,有一个建议的解决方案,更进一步,您可以编写一个TabControl子类,并可能使用VirtualizingStackPanel作为自定义TabControl的项源。

本文介绍了您可能尝试的UI和数据虚拟化选项。

我会说是的,DataTemplates是如何构建对象的蓝图,所以如果切换选项卡,TabControl很可能会丢弃旧的选项卡内容,并创建一个新的选项卡。这个问题可能与此有关。

尽管人们以前抱怨过TabControl可能实际重用对象的行为,但我认为这可能取决于项的底层类型