0

我有现有的 WPF 应用程序。在这个应用程序中,我有主 TabControl,在这个 TabControl 下我有多个选项卡。

我只想在一个选项卡中应用 Prism 架构。我想将 Shell 创建为一个选项卡。

是否可以申请?如果是,我如何才能为该特定选项卡挂钩 BootStrapper。在这种情况下,我想按需加载此选项卡。当用户单击此选项卡时。我想通过 BootStrapper 加载所有 UI 元素,然后我想运行 Shell

我可以使用 UserControl_Loaded 事件来触发我的引导程序吗?如果是,我该如何实例化引导程序?

我希望问题是可以理解的。

4

2 回答 2

1

它可以工作,但你必须手动做一些事情(特别是如果你想让模块工作)。请按照以下步骤使您的事情正常工作:

首先使用 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

于 2012-07-31T19:42:54.907 回答
0

我不确定这是否会像您期望的那样工作,因为引导程序用于启动 shell。您可以通过让您的应用程序成为外壳程序并通过启动引导程序并将外壳程序设置为主应用程序来完成此操作。然后,主应用程序将是您的 WPF 应用程序,但在应用程序内部的某个地方,您定义了要使用的一个区域。

但是,我不认为只是将区域添加到选项卡项然后启动您的应用程序会起作用。为了让所有 IoC 魔法发生,引导程序需要成为起始目标。

简短的回答:是的,但需要注意如何编写 shell。

于 2012-07-26T19:25:05.697 回答