我应该为每个WPF窗口创建单独的引导程序吗?
我是WPF和Prism的新手。我想知道我是否应该为每个新窗口创建新的引导程序?例如,在“Window1”中,我从列表框中选择元素,然后单击按钮“ShowDetails”,在新窗口“Window2”中,我应该看到我选择的详细信息。我为它们提供了窗口和模块,但我想知道如何以及在何处为“Window2”注册模块“Module2” 我的引导程序的例子我应该为每个WPF窗口创建单独的引导程序吗?,wpf,prism,bootstrapper,Wpf,Prism,Bootstrapper,我是WPF和Prism的新手。我想知道我是否应该为每个新窗口创建新的引导程序?例如,在“Window1”中,我从列表框中选择元素,然后单击按钮“ShowDetails”,在新窗口“Window2”中,我应该看到我选择的详细信息。我为它们提供了窗口和模块,但我想知道如何以及在何处为“Window2”注册模块“Module2” 我的引导程序的例子 class Bootstrapper : UnityBootstrapper { protected override DependencyObj
class Bootstrapper : UnityBootstrapper
{
protected override DependencyObject CreateShell()
{
var mainWindow = new Window1();
mainWindow.Show();
return mainWindow;
}
protected override IModuleCatalog GetModuleCatalog()
{
var moduleCatalog = new ModuleCatalog();
moduleCatalog.AddModule(typeof(Module1));
return moduleCatalog;
}
}
"App.xaml.cs"
public partial class App : Application
{
public App()
{
var bootstrapper = new Bootstrapper();
bootstrapper.Run();
}
}
引导程序通常在WPF应用程序的启动类中使用。通常这是标准模板中的App.xaml.cs文件,它是App.xaml文件的代码隐藏类。您可以重写启动时的方法,实例化引导程序并调用其run方法。您可以延迟引导程序的启动,直到覆盖OnStartup,而不是将其写入App.xaml.cs类的构造函数中。然后,您将使用Prism中的RegionManager并在XAML中定义区域。如果您有多个独立的窗口,这与Prism的预期使用方式略有不同。在Prism源代码中提供的Bootstrapper类的CreateShell方法中定义了MainWindow或Shell的概念。取而代之的是,有一个主窗口并定义区域,也许考虑创建一个机制来在对话框中显示附加窗口。可以将主窗口划分为多个区域,并通过RegionManager注入用户控件。这是通过RegionManager的激活方法完成的 启动阅读模式和实践指南,也许考虑看Mike Taulty的棱镜上的视频。第一个视频在这里: 视频系列中有许多视频(总共10个)将帮助您开始使用PRISM 下面显示了如何在XAML中定义区域的示例:
<ItemsControl Regions:RegionManager.RegionName="MainRegion" />
您必须定义多个实现IModule接口的模块,并将这些模块添加到您的ModuleCatalog中,就像您使用ModuleA所做的那样 bootstrapper是一个集所有功能于一体的单人秀。。。理论上,一个应用程序中应该只存在一个。其中有
moduleCatalog.AddModule(typeof(Module1))代码>,模块2也应该有一行,但wpf如何知道模块2是为Window2注册的呢?在Window1中我有“Region1”,在Window2中有“Region2”。当我尝试在bootstrapper中注册Module2时,我出现了一个错误“区域管理器不包含Region2区域”。我可以建议您开始使用Caliburn.Micro吗?它比PRISM简单得多,注册的东西也少得多。-为了进一步帮助您,并且在我的PRISM知识允许的范围内,您应该向RegionManager注册您的Region2,这似乎相当全面
var viewA = new ViewA();
var regionA = (new RegionManager()).Regions["RegionA"];
regionA.Activate(viewA);