Я немного расстроен призмой. Что-то, что должно быть таким легким, действительно заставляет меня застрять!
Я пытаюсь загрузить свой ModuleCatalog из файла. Я создал файл ModuleCatalog.xaml в моем проекте оболочки. В свойствах файла я удалил действие Custom Tool и установил Build Action на Resource (я также пытался Content ).
Вот код, который у меня есть:
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)));
}
...
При запуске я получаю следующую ошибку:
IModuleCatalog необходим и не может быть нулевым для инициализации модулей.
Я в тупике. Блоги, которые я читал, и видео, которые я смотрел, показывают, что я делаю это правильно.
Я не могу думать, что я единственный, кто загрузил мою конфигурацию из файла xaml в wpf, но я не могу найти что-либо подобное.
Любая помощь будет отличной!
ПРИМЕЧАНИЯ:
- Я использую приложение WPF. Есть множество примеров того, как это сделать в Silverlight. Мне нужно это для WPF.
- Я посмотрел этот пост и не нашел его полезным для моей проблемы: 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/
Вот то, что я сделал, наконец-то сработало:
protected override IModuleCatalog GetModuleCatalog()
{
FileStream catalogStream = new FileStream(@".\ModuleCatalog.xaml",FileMode.Open);
var catalog = ModuleCatalog.CreateFromXaml(catalogStream);
catalogStream.Dispose();
return catalog;
}