#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");