我的应用程序的视图切换性能有问题。
我有一个预先创建View和ViewModel的模块,如:
public void InitializeModule()
{
this.Presenter = ViewHelper.ConstructViewWithViewModel<TView>(typeof(TView), new TViewModel());
this.ViewModel = (TViewModel)this.Presenter.DataContext;
}
然后,我通过ActiveView在屏幕上显示它,如:
<ContentPresenter
Margin="0"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Content="{Binding ActiveView.Presenter}" />
问题是,激活视图和显示它之间存在滞后。
更改视图只是将ActiveView替换为另一个预先创建的模块。
我已经检查过,View和ViewModel的构造函数只运行一次。在这些变化之间没有大的逻辑。
你可以告诉我它可能是什么原因吗?当我在切换到另一个视图时有一个滞后~0.2秒时看起来非常糟糕。//编辑:
每个模块都存在延迟。在更复杂的视图(即使用DevExpress控件)上似乎更长
EDIT2: 我已经分析了我的应用程序,似乎包含DevExpress Scheduler的最长加载模块在这些方法上有一个热点:
DevExpress.Xpf.Scheduler.Drawing.SharedSizePanel.MeasureOverrideCore()
DevExpress.Xpf.Core.DXBorder.MeasureOverride()
有没有办法减少它?
答案 0 :(得分:0)
我认为这可能与DevExpress控件有关,它们测量了它们有多少空间以及它们需要多少空间。尝试使用仍在使用Catel的空视图。如果是,则使用LogManager.AddDebugListener()
启用Catel中的详细日志记录以检查日志记录。
如果问题消失,可能有两个原因: