Je suis un peu frustré par le prisme. Quelque chose qui devrait être si facile est vraiment de me coincer! Je tente de charger mon ModuleCatalog à partir d'un fichier. J'ai créé le fichier ModuleCatalog.xaml dans mon projet shell. Dans les propriétés du fichier que j'ai supprimé l'action outil personnalisé et j'ai mis Build Action-ressources (j'ai aussi essayé contenu).Comment entrer l'URI pour configurer le ModuleCatalog dans Prism WPF
Voici le code que j'ai:
public class Bootstrapper : UnityBootstrapper
{
protected override IModuleCatalog GetModuleCatalog()
{
var uri = new Uri("/ShellProject;component/ModuleCatalog.xaml", UriKind.Relative);
var catalog = ModuleCatalog.CreateFromXaml(uri);
return catalog;
// I have also tried this:
//return (ModuleCatalog.CreateFromXaml(
// new Uri("ModuleCatalog.xaml", UriKind.Relative)));
}
...
Quand je cours, je reçois l'erreur suivante:
The IModuleCatalog is required and cannot be null in order to initialize the modules.
Je suis perplexe. Les blogs que j'ai lus et les vidéos que j'ai regardées semblent indiquer que je le fais bien.
Je ne peux pas penser que je suis le seul à avoir chargé ma configuration à partir d'un fichier xaml dans wpf, mais je ne peux pas trouver de toute façon autour de ça.
Toute aide serait géniale!
NOTES:
- J'utilise une application WPF. Il y a des tonnes d'exemples sur la façon de le faire dans Silverlight. J'en ai besoin pour WPF.
- J'ai regardé ce poste et n'ont pas trouvé utile pour ma question: http://blogs.southworks.net/dschenkelman/2009/08/09/how-to-populate-the-module-catalog-from-xaml-in-a-wpf-application-using-the-composite-application-guidance-for-wpf-silverlight-prism-v2/
C'est ce que je l'ai fait finalement travaillé:
protected override IModuleCatalog GetModuleCatalog()
{
FileStream catalogStream = new FileStream(@".\ModuleCatalog.xaml",FileMode.Open);
var catalog = ModuleCatalog.CreateFromXaml(catalogStream);
catalogStream.Dispose();
return catalog;
}
Je substituez la méthode 'CreateModuleCatalog' correcte mais ayant' Uri ("catalog.xaml", UriKind.Relative) 'ne fonctionne pas pour moi - le fichier n'est pas trouvé, bien qu'il se trouve dans le même dossier. –
Lorsque vous vérifiez les sources Prism, il est évident que 'CreateModuleCatalog (Uri)' suppose que 'Uri' pointe vers la ressource Application. Utilisez donc 'CreateModuleCatalog (Stream)' à la place si vous voulez charger le catalogue du module depuis le fichier local. –
chose drôle, Lukas. Ma réponse précédente a fonctionné pour moi jusqu'à aujourd'hui et j'ai découvert la même chose que vous avez faite. Je ne sais pas pourquoi cela a fonctionné précédemment, mais j'ai modifié ma réponse pour refléter la meilleure pratique. Merci pour vos commentaires. – scottrudy