WPF入门到跪下 第十一章 Prism(三)初始化启动 您所在的位置:网站首页 主窗口初始化失败 WPF入门到跪下 第十一章 Prism(三)初始化启动

WPF入门到跪下 第十一章 Prism(三)初始化启动

2024-06-29 11:56| 来源: 网络整理| 查看: 265

初始化

Prism框架项目的初始化,可以使用两种启动器类型来进行,分别是PrismBootstrapper和PrismApplication。

一、PrismBootstrapper

使用PrismBootstrapper来进行WPF项目的初始化,需要通过PrismBootstrapper对象来进行项目的启动。

PrismBootstrapper进行项目的启动,主要是为了通过PrismBootstrapper对象来进行项目IOC容器的初始化,为后续IOC容器管理对象做基础。

要通过PrismBootstrapper来启动项目,首先要创建一个PrismBootstrapper的子类,并实现两个方法成员:

DependencyObject CreateShell():进行主窗口对象的创建。 主窗口对象需要通过Container.Resolve()来创建。 void RegisterTypes(IContainerRegistry containerRegistry):这个函数主要用于进行IOC容器管理类型的注册。

最终在App后台代码中调用PrismBootstrapper对象的Run()方法来启动项目

Run():PrismBootstrapperBase的实例方法,用于初始化、启动IOC容器、展示窗口等操作。 启动步骤如下

创建启动类

public class Bootstrapper : PrismBootstrapper { protected override DependencyObject CreateShell() { //创建并返回一个主窗口对象 return Container.Resolve(); } protected override void RegisterTypes(IContainerRegistry containerRegistry) { //这个函数中进行一些类型注册 } }

消除App.xaml的启动属性

在App后台代码中通过PrismBootstrapper来启动项目

public partial class App : Application { public App() { new Bootstrapper().Run(); } } 二、PrismApplication

使用PrismApplication来进行项目启动,在步骤上会相对简单一些,具体如下:

修改App.xaml

将顶级元素Application修改为prism:PrismApplication。

去除启动属性StartupUri="MainWindow.xaml”。

修改App后台代码

继承PrismApplication类并实现CreateShell和RegisterTypes两个方法,其用法跟上文中的PrismBootstrapper是一样的。

有一点需要注意,App类型在继承了PrismApplication类后可能会提示错误,但是没有提示要实现方法,此时重新生成一下代码就会由提示了。

public partial class App : PrismApplication { protected override Window CreateShell() { //创建主窗口对象 return Container.Resolve(); } protected override void RegisterTypes(IContainerRegistry containerRegistry) { //这里进行IOC容器管理类型的注册 } }

PS:此后的章节中,都以PrismApplication启动作为基础进行学习。

三、基于Prism框架的登录跳转

在进行桌面应用开发时,从登录窗口跳转到主窗口的操作极为常见的,在Prism框架下,登录跳转的具体操作可以通过重写InitializeShell方法来实现(这里以PrismApplication启动为例)。

InitializeShell(Window shell):PrismApplication类型的实例方法,在初始化Shell(主窗口)的时候执行。

public partial class App : PrismApplication { ...... protected override void InitializeShell(Window shell) { //通过IOC容器来创建登录窗口 var login = Container.Resolve(); if (login == null || login.ShowDialog() == false) { //当登录失败或登录窗口关闭,则直接关闭应用 Application.Current.Shutdown(); } else { base.InitializeShell(shell); } } }

这里的Login为登录窗口,中间有一个按钮,点击后将登录窗口的DialogResult属性设置为true并关闭登录窗口。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有