Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在.NET 3.5 WPF应用程序的某些部分中使用Prism 2x_C#_Wpf_Prism - Fatal编程技术网

C# 在.NET 3.5 WPF应用程序的某些部分中使用Prism 2x

C# 在.NET 3.5 WPF应用程序的某些部分中使用Prism 2x,c#,wpf,prism,C#,Wpf,Prism,我有现有的WPF应用程序。在这个应用程序中,我有主选项卡控件,在这个选项卡控件下我有多个选项卡 我只想在一个选项卡中应用Prism体系结构。我想将Shell创建为一个选项卡 可以申请吗?如果是的话,我怎样才能为那个特定的标签钩住引导程序呢。在这种情况下,我想按需加载此选项卡。当用户单击此选项卡时。我想通过BootStrapper加载所有UI元素,然后运行Shell 我可以使用UserControl\u加载的事件触发我的引导程序吗?如果是,如何实例化引导程序 我希望这个问题是可以理解的。我不确定这

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

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

可以申请吗?如果是的话,我怎样才能为那个特定的标签钩住引导程序呢。在这种情况下,我想按需加载此选项卡。当用户单击此选项卡时。我想通过BootStrapper加载所有UI元素,然后运行Shell


我可以使用UserControl\u加载的事件触发我的引导程序吗?如果是,如何实例化引导程序


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

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

然而,我不认为仅仅向选项卡项添加一个区域,然后启动应用程序就行了。为了让所有的国际奥委会魔术发生,引导者需要成为起始目标


简短回答:是的,有关于如何编写shell的警告。

它可以工作,但是你必须手工完成一些工作(特别是如果你想让模块工作的话)。 按照以下步骤让您的设备正常工作:

首先用引导程序、Shell等创建一个普通的Prism项目。。 然后,在需要显示区域时,以这种方式获取UserControl:

ServiceLocator.Current.GetInstance<TestUc>();
这将设置要用作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服务器上为您上传了一个小测试项目:

我可以使用UserControl\u加载的事件触发我的引导程序吗?如果是,如何实例化引导程序?我更新了我的问题。我想你应该实例化引导程序并调用COnfigureContainer。但是,我也不确定这是否有效,因为InitializeShell方法通常调用'Application.Current.MainWindow=(Shell)this.Shell',我不确定这是否有效。
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();