它可以工作,但你必须手动做一些事情(特别是如果你想让模块工作)。请按照以下步骤使您的事情正常工作:
首先使用 Bootstrapper、Shell 等创建一个常用的 Prism 项目。然后当你想显示它时,以这种方式获取带有区域的 UserControl:
ServiceLocator.Current.GetInstance<TestUc>();
在 UserControl 的构造函数中,让 ServiceLocator 给您 RegionManager 作为参数,并在 InitializeComponent() 之后执行以下操作
RegionManager.SetRegionManager(this, regionManager);
RegionManager.UpdateRegions();
这将附加的依赖属性设置为在 Xaml 中用作 RegionManager.RegionName="..."。现在您可以通过 RegionManager 设置区域,也可以拉起整个 Prism 基础设施来从配置加载一些模块。假设你想走艰难的路。在 UserControl 的构造函数底部添加此代码,模块将从 App.config 加载:
var catalog = new ConfigurationModuleCatalog
{
Store = new ConfigurationStore()
};
var logger = new TextLogger();
var moduleInitializer = new ModuleInitializer(ServiceLocator.Current, logger);
var moduleManager = new ModuleManager(moduleInitializer, catalog, logger);
moduleManager.Run();
我在我的 ftp 服务器上为你上传了一个小测试项目:http: //compositedevtec.tk/upload/prismTest.zip