我有一個用戶控件,我有多個棱鏡區域定義注入視圖。我決定使用Prism視圖導航來處理根據用戶操作(如下所示)切換 我的「SelectedMenuContentRegion」,並且遇到了問題。我相信問題出在我的用法上,但我一直無法弄清楚我做錯了什麼。我有以下用戶控件,其中包含一個自定義的WPF控件。棱鏡6區域管理器RequestNavigate無法導航的一些區域
<Grid>
<commonwpfcontrols:NavigationPane Background="{StaticResource SecondaryColorBrush}" IsExpanded="False" MenuItems="{Binding MenuItems}">
<commonwpfcontrols:NavigationPane.Content>
<ContentControl prism:RegionManager.RegionName="MapRegion"/>
</commonwpfcontrols:NavigationPane.Content>
<commonwpfcontrols:NavigationPane.SelectedMenuContent>
<ContentControl prism:RegionManager.RegionName="SelectedMenuContentRegion"/>
</commonwpfcontrols:NavigationPane.SelectedMenuContent>
</commonwpfcontrols:NavigationPane>
<Grid>
<ContentControl prism:RegionManager.RegionName="ApplicationOverlay"/>
</Grid>
有定義3個區域。如果我做標準
mRegionManager.RegisterViewWithRegion("SelectedMenuContentRegion",() => mUnityContainer.Resolve<MapSettingsView>());
它能正常工作,但是,如果我註冊的觀點像以下導航:
mUnityContainer.RegisterTypeForNavigation<MapSettingsView>();
,然後嘗試晚些時候導航
mRegionManager.RequestNavigate("SelectedMenuContentRegion ", "MapSettingsView", NavigationComplete);
失敗。我在調試器中注意到區域管理器只有區域列表中的「ApplicationOverlay」區域。因此,我將我正在導航的區域更改爲ApplicationOverlay區域作爲測試,並且工作正常。我通過依賴注入來獲得區域經理。關於爲什麼區域經理不知道其他定義區域的任何線索?
更新 由於需要更詳細的信息,我創建了一個小的獨立樣本,顯示失敗的導航。 Prism Navigation Sample
我會挖弄清楚它們是否被實現。使用VS2017工具顯示活動的可視化樹,ContentControls顯示在列表中,但區域似乎不包含在區域管理器中。導航請求是由於用戶單擊列表框項目而發生的,因此在應用程序啓動/初始化發生之後完成。 –
在導航窗格展開之前,內容控件可能不會添加到可視化樹中。只是一個猜測。 –
當我發出命令導航時,內容控件已打開。我會盡力削減我已經成爲一個獨立的例子。 –