我是WPF和Prism的新手。我想知道我是否应该为每个新窗口创建新的引导程序?例如,我有“Window1”,我从ListBox中选择元素,然后单击“ShowDetails”按钮,在新窗口“Window2”中,我应该看到我选择的细节。我有他们的窗口和模块,但我想知道如何以及在哪里为“Window2”注册模块“Module2”?
我的Bootstrapper示例。
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();
}
}
答案 0 :(得分:1)
Bootstrapper通常用在WPF应用程序的启动类中。通常这将是标准模板中的App.xaml.cs文件,它是App.xaml文件的代码隐藏类。您重写方法OnStartup并实例化您的Bootstrapper并调用其run方法。您可以延迟启动引导程序,直到覆盖OnStartup,而不是在App.xaml.cs类的构造函数中编写它。然后,您将在Prism中使用RegionManager并在XAML中定义区域。如果你有多个独立的Windows,这与Prism的使用方式有点不同。您可以在Prism源代码中的Bootstrapper类的CreateShell方法中定义MainWindow或Shell的概念。相反,有一个主窗口和定义区域,也许可以考虑创建一个机制来显示对话框中的其他窗口。可以将MainWindow分区为多个区域,并通过RegionManager注入用户控件。这是通过RegionManager的activate方法完成的。
通过阅读“模式与实践指南”开始,或者考虑观看Mike Taulty对Prism的视频。第一个视频在这里:
Prism & Silverlight: Part 1 - Taking Sketched Code Towards Unity
视频系列中有很多视频(总共10个)可以帮助您开始使用PRISM。
下面显示了如何在XAML中定义区域的示例:
<ItemsControl Regions:RegionManager.RegionName="MainRegion" />
可以激活PRISM区域,例如通过一个DelegateCommand或ICommand绑定到一个按钮是以下代码:
var viewA = new ViewA();
var regionA = (new RegionManager()).Regions["RegionA"];
regionA.Activate(viewA);
您必须定义多个实现IModule接口的模块,并将这些模块添加到ModuleCatalog中,就像您已经使用ModuleA一样。