2015-12-16 3 views
0

У меня проблема с переключением отображения в приложении.Производительность Catel/WPF при переключении вида

У меня есть модуль, который предварительно созданный 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 с при переключении на другой вид.

// Edit:

лаг существующих на каждом модуле. Это, кажется, уже на более сложный вид (т.е. с контрольной DevExpress)

Edit2: Я профилированный мое заявление и кажется, что самый длинный модуль загрузки, который содержит DevExpress планировщик имеет горячую точку в этих методов:

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

Есть ли способ уменьшить его?

ответ

0

Я думаю, что это, вероятно, связано с элементами управления DevExpress, измеряющими, сколько места у них есть и сколько места они хотят. Попытайтесь использовать это с пустыми представлениями, которые все еще используют Catel. Если это так, включите подробное ведение журнала в Catel с помощью LogManager.AddDebugListener(), чтобы проверить регистрацию.

Если проблема уходит, может быть 2 причины:

  1. Вы работаете очень сложное визуальное дерево (тогда это могло бы быть умнее, играть с видимостью вместо того, чтобы заменить все содержимое области отображения).
  2. Элементы управления DevExpress имеют проблему (может быть, неправильно сконфигурированы?). Тогда лучше связаться со своей поддержкой.
+0

Измененный способ отображения/свертывания различных видов работ хорошо работает. благодаря – Tomasz

Смежные вопросы