我最近在谈论另一个正在查看我的WPF应用程序的GUI开发人员。他建议将我非常大的WPF视图(文件)分解为几个较小的视图。根据他的说法,这应该提升加载性能,因为从UserControls加载到单独文件中的元素只有在实际进入视图时才会呈现。 在我的主视图中,我目前拥有超过10k行的XAML。由于这个视图的主要部分是一个带有几个大TabItem的大TabControl,因此很容易将每个TabItem的内容传输到一个单独的文件中。确实,大多数选项卡不会被每个用户使用,或者至少在启动后不会直接使用。
然而,我无法通过搜索网络来证实他的主张。每当我在互联网上搜索WPF性能优化时,我都会找到各种建议,但是从未将大型XAML文件拆分成较小的文件。
就我个人而言,每个视图都有一个大的XAML更舒适,在我的情况下,可重用性确实不是问题。所以现在我想知道:
将我的大型视图分解为每个可能一开始不需要的部分的小型XAML文件真的有意义吗?
答案 0 :(得分:1)
将我的大型视图分解为每个可能一开始不需要的部分的小型XAML文件真的有意义吗?
从可维护性和可重用性的角度来看,是的。但是,从性能的角度来看,无论是内联还是在单独的TabItem
中定义每个UserControl
的内容都无关紧要。
因此,您不会因此而获得任何性能优势:
<TabItem>
<local:UserControl1 />
</TabItem>
...而不是这样做:
<TabItem>
<Grid>
...
</Grid>
</TabItem>
您应该考虑采用MVVM设计模式并将ItemsSource
的{{1}}属性绑定到视图模型的TabControl
属性,并使用IEnumerable
来定义外观每个项目,而不是内联定义所有内容。这样做,只会将所选DataTemplates
的内容加载到可视树中。