Я пытался выучить призму, но я не могу заставить работать очень простой пример. У меня есть Shell, который имеет один регион. Я пытаюсь загрузить вид из модуля в область оболочки, но оболочка показывает пустое окно. Я просто не могу понять, почему представление не загружается в область оболочки. Вот файлы кода.
Загрузчик:
public class Bootstrapper : MefBootstrapper {
protected override DependencyObject CreateShell() {
Window shell = new MainWindow();
Application.Current.MainWindow = shell;
return shell;
}
protected override IModuleCatalog CreateModuleCatalog() {
return new ConfigurationModuleCatalog();
}
}
Shell:
<Window x:Class="MVVMPractice.MainWindow">
<StackPanel x:Name="LayoutRoot" Background="White">
<ContentControl prism:RegionManager.RegionName="MainRegion" />
</StackPanel>
</Window>
Модуль:
[ModuleExport(typeof(CoreModule))]
public class CoreModule : IModule {
[Import]
public IRegionManager RegionManager { get; set; }
public void Initialize() {
var view = new WelcomeView();
RegionManager.AddToRegion("MainRegion", view);
}
}
Просмотр для загрузки в регионе:
<UserControl x:Class="MVVMPractice.Modules.Core.WelcomeView">
<Grid Background="Red">
<TextBlock Text="Hello Prism!" FontSize="20" />
</Grid>
</UserControl>
Приведенный выше вид должен отображаться в оболочке, но это не так. Любые идеи, почему регион оболочки не показывает вышеупомянутый вид?
EDIT:
Модуль настраивается через файл App.config, как показано ниже.
App.config
<configuration>
<configSections>
<section name="modules" type="Microsoft.Practices.Prism.Modularity.ModulesConfigurationSection,
Microsoft.Practices.Prism"/>
</configSections>
<modules>
<module assemblyFile="MVVMPractice.Modules.Core.dll"
moduleType="MVVMPractice.Modules.Core.CoreModule, MVVMPractice.Modules.Core.CoreModule,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
moduleName="CoreModule"
startupLoaded="true" />
</modules>
</configuration>