C# 如何提高ContentControl卸载性能
我正在使用MVVM和ViewModel-First方法开发一个WPF应用程序。在ViewModel中进行页面导航的一种常见方法是首先将ViewModel设置为ContentControl的内容。通过使用DataTemplates,可以呈现正确的视图 当要替换的视图具有复杂的可视树时,替换ContentControls内容可能会导致性能问题。它需要被卸载,这意味着整个树被递归清理。本文对此进行了详细解释。我注意到这取决于设备,但卸载复杂页面的时间可能长达10秒 我目前找到了两种解决此问题的方法:C# 如何提高ContentControl卸载性能,c#,wpf,C#,Wpf,我正在使用MVVM和ViewModel-First方法开发一个WPF应用程序。在ViewModel中进行页面导航的一种常见方法是首先将ViewModel设置为ContentControl的内容。通过使用DataTemplates,可以呈现正确的视图 当要替换的视图具有复杂的可视树时,替换ContentControls内容可能会导致性能问题。它需要被卸载,这意味着整个树被递归清理。本文对此进行了详细解释。我注意到这取决于设备,但卸载复杂页面的时间可能长达10秒 我目前找到了两种解决此问题的方法:
卸载ContentControl的性能能否在不产生上述解决方案的情况下得到改善?我使用的是2。没有问题的选择。WPF视图可能会占用大量内存。有时清除ItemsControl绑定到的ViewModels列表,并调用GC(或等待它)可以解决此问题。10秒。。。太多了!尝试分析这是最耗时的操作,或者删除部分UI,并检查它如何影响加载/卸载时间。我曾经遇到过这样一个非常严重的问题,发现一个小图标有无数条不透明的路径。。。