2017-08-08 1 views
0

J'utilise Prism pour UWP et j'ai base classé mon application de PrismUnityApplication. J'ai surchargé OnLaunchApplicationAsync et je suis en train d'appeler,NavigationService.Navigate exception de lancement lorsqu'il est appelé dans Prism pour UWP

NavigationService.Navigate("HighlightsView", null); 

Lorsqu'elle est appelée, le programme déclenche une exception,

{"The page name HighlightsView does not have an associated type in namespace Panda.UWP.Views\r\nParameter name: pageToken"} 

J'ai un dossier nommé Vues et j'ai une vue nommée HighlightsView sous l'espace de noms, Panda.UWP.Views.

Y a-t-il une convention de nommage à suivre ici? Parce que si je renommer ma vue de Faits saillantsVoir à HighlightsPage, alors tout semble fonctionner très bien! solution simple

Répondre

2

Y at-il une convention d'appellation à suivre ici?

La réponse courte est oui. Prism pour Windows Runtime spécifie un objet ViewModelLocator, qui peut être utilisé pour gérer l'instanciation des modèles de vue et leurs associations aux vues. Cette approche présente l'avantage qu'il existe une seule classe responsable de l'instanciation du modèle de vue.

La classe ViewModelLocator utilise une propriété jointe, AutoWireViewModel, pour associer des modèles de vue à des vues une fois que cette propriété a la valeur True. Pour plus de détails au sujet de la convention s'il vous plaît référence Dave's Tech Blog:

  • modèles de vue sont dans le même ensemble que les types de vue.

  • Les vues sont dans un espace de noms enfant .Views.

  • Les noms de fin se terminent par "Page".

  • Les modèles de vue sont dans un espace de noms enfant .ViewModels.

  • Les noms de modèles correspondent aux noms des vues et se terminent par "ViewModel".

Le blog explique également comment remplacer les conventions par défaut de Prism auxquelles vous pouvez faire référence. Brian's blog également décrire les choses similaires à propos de la convention et comment le changer.

+0

Je suppose que j'ai toutes les conventions suivies, attendez-vous à la 3ème, Voir les noms se terminent par "Page". Comme je l'ai mentionné dans ma question, j'essaie de réutiliser la majeure partie du code de l'application classique dans la version UWP et puisque le prisme wpf n'inclut aucune contrainte liée à la vue se terminant par "Page", je frappe un bloc. Existe-t-il un moyen de câbler manuellement des vues et des viewmodels? – sudarsanyes

+1

@sudarsanyes Je pense que oui. Pourriez-vous s'il vous plait essayer la section "Change the Nasty Conventions" du blog de Brian? –

0

est de renommer le HighlightsView.xaml être HighlightsViewPage.xaml

+1

Oui, je l'ai compris et expliqué dans ma question ... mais quelle est la convention ici? – sudarsanyes