2015-12-16 31 views
0

我的應用程序的視圖切換性能有問題。切換視圖時的Catel/WPF性能

我已經預先創建視圖和視圖模型就像一個模塊:

public void InitializeModule() 
{ 
    this.Presenter = ViewHelper.ConstructViewWithViewModel<TView>(typeof(TView), new TViewModel()); 
    this.ViewModel = (TViewModel)this.Presenter.DataContext; 
} 

然後,我在屏幕上通過有效收視像顯示它:

<ContentPresenter 
     Margin="0" 
     HorizontalAlignment="Stretch" 
     VerticalAlignment="Stretch" 
     Content="{Binding ActiveView.Presenter}" /> 

的問題是,激活視圖和顯示它之間存在滯後。

更改視圖只是將ActiveView替換爲另一個預先創建的模塊。

我檢查過,View和ViewModel的構造函數只運行一次。這些變化之間沒有很大的邏輯關係。

你能告訴我可能是什麼原因嗎?當我切換到另一個視圖時,我有一個滯後時間〜0.2秒,這看起來非常糟糕。

//編輯:

滯後存在於每一個模塊。這似乎是(即用的DevExpress控件)

EDIT2更長更復雜的觀點: 我已經異型我的應用程序,看來,最長裝載模塊,它包含的DevExpress調度具有在這些方法的熱點:

DevExpress.Xpf.Scheduler.Drawing.SharedSizePanel.MeasureOverrideCore() 
DevExpress.Xpf.Core.DXBorder.MeasureOverride() 

有沒有辦法減少它?

回答

0

我認爲這可能與DevExpress控件測量它們有多少空間以及它們需要多少空間有關。嘗試在仍使用Catel的空視圖中使用它。如果是,則使用LogManager.AddDebugListener()啓用Catel中的詳細日誌記錄以檢查日誌記錄。

如果問題消失了,可能有兩個原因:

  1. 您正在運行一個非常複雜的視覺樹(那麼它可能是更聰明,而不是能見度玩更換顯示區域的整個內容)。
  2. DevExpress控件有問題(可能配置錯誤?)。那麼最好聯繫他們的支持。
+0

更改顯示/摺疊不同視圖的方式效果很好。謝謝 – Tomasz