J'ai un contrôle utilisateur dans lequel plusieurs régions Prism sont définies pour l'injection de vues. J'ai décidé d'utiliser la navigation dans la vue Prism pour gérer le ma "SelectedMenuContentRegion" basée sur les actions de l'utilisateur (comme indiqué ci-dessous) et j'ai rencontré un problème. Je suis sûr que le problème est avec mon utilisation, mais je n'ai pas été capable de comprendre ce que je fais mal. J'ai le contrôle utilisateur suivant qui contient un contrôle WPF personnalisé.Prism 6 Gestionnaire de régions RequestNavigate ne parvient pas à naviguer dans certaines régions
<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>
Il y a 3 régions définies. Si je fais la norme
mRegionManager.RegisterViewWithRegion("SelectedMenuContentRegion",() => mUnityContainer.Resolve<MapSettingsView>());
Il fonctionne comme prévu, mais si je me inscrire la vue pour la navigation comme ce qui suit:
mUnityContainer.RegisterTypeForNavigation<MapSettingsView>();
et puis essayez de naviguer quelque temps plus tard
mRegionManager.RequestNavigate("SelectedMenuContentRegion ", "MapSettingsView", NavigationComplete);
Il échoue. J'ai noté dans le débogueur que le gestionnaire de région avait seulement la région "ApplicationOverlay" dans sa liste de régions. J'ai donc changé la région vers laquelle je naviguais, vers la région ApplicationOverlay en test, et cela a fonctionné. J'obtiens le gestionnaire de la région grâce à l'injection de dépendance. Toute indication quant aux raisons pour lesquelles les autres régions définies ne sont pas connues du gestionnaire de région?
Mise à jour Étant donné que des informations plus détaillées sont requises, j'ai créé un petit échantillon autonome qui montre la navigation échouée. Prism Navigation Sample
je vais creuser dans la détermination si elles sont réalisées. En utilisant les outils VS2017 pour afficher l'arborescence visuelle en direct, les ContentControls apparaissent dans la liste, mais les régions ne semblent pas être contenues dans le gestionnaire de région. La requête de navigation se produit lorsqu'un utilisateur clique sur un élément de la zone de liste, ce qui est fait après le démarrage/l'initialisation de l'application. –
Les contrôles de contenu ne sont probablement pas ajoutés à l'arborescence visuelle tant que les volets de navigation ne sont pas développés. Juste une supposition. –
Les contrôles de contenu sont ouverts lorsque j'émets la commande pour naviguer. Je vais essayer de réduire ce que j'ai dans un exemple autonome. –