Prism Step1 BootstrapperShell

BootstrapperShell 是 Prism 很重要的理念之一,调用 Bootstrapper 类进行程序主窗体的引导和构造,每一个基于 Prism 架构的应用,都将通过这个基类开始。

官方的第一章 教程,向我们展示了 BootstrapperShell 的初级使用方法

App.xaml.cs

{.line-numbers}
1
2
3
4
5
6
7
8
9
10
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);

var bootstrapper = new Bootstrapper();
bootstrapper.Run();
}
}

重写 OnStartUp 方法,调用 Bootstrapper 类进行初始化,Bootstrapper 的意义在于创建 主窗体,以及加载开始启动所需的默认模块等。

BootstrapperShell.cs

{.line-numbers}
1
2
3
4
5
6
7
8
9
10
11
12
class Bootstrapper : UnityBootstrapper
{
protected override DependencyObject CreateShell()
{
return Container.TryResolve<MainWindow>();
}

protected override void InitializeShell()
{
Application.Current.MainWindow.Show();
}
}

Bootstrapper 类很简洁,就包含了 CreateShellInitializeShell 方法

CreateShell

Prism 使用依赖注入模式来管理组件之间的依赖,Prism 被设计使用 UnityMEFIOC (依赖注入)注册容器,此方法就是通过 Unity容器注册主窗口的窗体对象。

InitializeShell

显示应用程序的主窗体,对于 Prism 架构而言,这里很好理解,是通过 CreateShell 注册的主窗体对象,常规开发,主窗体对象是在 App.xaml

{.line-numbers}
1
2
3
4
5
6
7
8
<Application
x:Class="WPF_AForge_Screen_Capurte_Demo.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WPF_AForge_Screen_Capurte_Demo"
StartupUri="MainWindow.xaml">
<Application.Resources />
</Application>

StartupUri 这里设置

那么第一章就结束了了,大家已经对 Prism 如何引导 主窗体 注册和显示有了一定的概念了,也意识到了与常规模式的不同,Bootstrapper 中还有很多高级应用,如 VM 定位器,模块导入配置等。

评论