Отсутствующая область PRISM для DevExpress NavBarGroup

#c# #wpf #prism-6

#c# #wpf #prism-6

Вопрос:

У меня действительно странная проблема с PRISM 6 и NavBarControl / NavBarGroup.

В моей оболочке есть следующее.xaml

         <dxn:NavBarControl MaxWidth="250" DockPanel.Dock="Left">
            <dxn:NavBarControl.View>
                <dxn:ExplorerBarView />
            </dxn:NavBarControl.View>

            <dxn:NavBarGroup prism:RegionManager.RegionName="Business" Header="Business" />
            <dxn:NavBarGroup prism:RegionManager.RegionName="Reports" Header="Reports" />
            <dxn:NavBarGroup prism:RegionManager.RegionName="Administration" Header="Administration" />

        </dxn:NavBarControl>
  

Я создаю пользовательский RegionAdapter для NavBarGroup. Метод, который необходимо реализовать, CreateRegion возвращает новый AllActiveRegion() . Этот метод попадает только дважды и возвращает новую область для отчетов и администрирования.

Отсутствует первая область с именем Business. Если я добавлю новую группу в начале, то эта область отсутствует, и добавляется следующая…

Есть идеи, что я мог бы сделать?

Спасибо за помощь…

Ответ №1:

Поскольку NavBarGroup не является визуальным элементом (он унаследован от класса FrameworkContentElement), проблема может быть связана с мусором DelayedRegionCreationBehavior, собранным в регионах, отличных от FrameworkElement, в PRISM. Вы можете попробовать изменить классы PRISM, как показано в этом отчете, или назначить имена областей в коде, как мы это делали в Prism Region на ленте, которая перестает работать после добавления DockLayoutManager.

Я пошел со вторым подходом, установив области в коде за моей оболочкой.xaml. Это сработало хорошо, и регионы были заполнены правильным образом.

Shell.xaml.cs (ctor)

 RegionManager.SetRegionName(business, "Business");
RegionManager.SetRegionName(reports, "Reports");
RegionManager.SetRegionName(administration, "Administration");