WPF创建Prism应用程序

创建Prism应用程序

1.第一步

首先, 创建一个基于.NetFramework 或.NetCore的WPF应用程序。如下所示:

2.第二步

为当前应用程序添加NuGet源, 打开NuGet管理器,安装Prism.DryIoc, 如下所示:

说明:

本文将以DryIoc容器为主讲解本系列的所有内容。

实际上, 在Prism7.2版本中, 已经引入了一些围绕IOC抽象的API更改。这最终将使得在选择容器之间切换更加容易,因为 API 在如何注册服务和视图方面完全相同。

您仍然可以访问容器,在 Autofac 容器构建器的情况下,通过扩展方法,以便您可以完成更复杂的注册。

// Prism 6.X way of Registering Services
protected override void RegisterTypes()
{
    // Container Specific Registrations

    // Autofac
    Builder.RegisterType<DebugLogger>().As<ILoggerFacade>().SingleInstance();

    // DryIoc
    Container.Register<ILoggerFacade, DebugLogger>(reuse: Reuse.Singleton,
                                                   ifAlreadyRegistered: IfAlreadyRegistered.Replace);

    // Ninject
    Container.Bind<ILoggerFacade>().To<DebugLogger>().InSingletonScope();

    // Unity
    Container.RegisterType<ILoggerFacade, MCAnalyticsLogger>(new ContainerControlledLifetimeManager());
}

// Unified API in Prism 7
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
    containerRegistry.RegisterSingleton<ILoggerFacade, DebugLogger>();
}

在Prism提供的VusualStudio Template Pack当中, 默认支持选择两种类型的容器项目:

1.DryIoc: GitHub地址

2.Unity: GitHub地址

3.第三步

修改App.xaml文件,添加prism命名空间, 继承由Application->PrismApplication, 如下所示:

打开App.xaml.cs文件, 继承由Application->PrismApplication, 如下所示:

注: 此时,继承于PrismApplication类, 需要实现其中的两个抽象方法。 CreateShell 与 RegisterTypes

Prism的初始化过程

在上面过程中, 我们已经将普通的WPF应用程序修改为PrismApplication, 此时, 再来了解一下Prism的整个框架的初始化过程, 如下所示:

到目前为止, 我们并不关心内部的运行逻辑及初始化过程, 从上面的图中, 可以大致了解, Prism在初始化过程中,

除了构建自身的容器、服务、适配器及一些区域行为后, 便开始创建应用程序的首页(Shell)以及加载模块, 最终呈现。

注: 关于涉及到的服务、注册类型、适配器、区域等概念, 再后面会陆续讲解。

了解了上面的初始化流程之后, 我们有了初步的概念, 再次回到第三步当中,App.xaml.cs文件。

在这里, 我们实现了其中的两个抽象方法:

1.CreateShell

该方法返回了一个Window类型的窗口, 其实就是返回应用程序的主窗口。

2.RegisterTypes

该方法用于在Prism初始化过程中, 我们定义自身需要的一些注册类型, 以便于在Prism中可以使用。

创建Shell示例

现在, 创建一个ShellWindow, 并且实现CreateShell将SheloWindow实例返回, 如下所示:

注:Container 是基类当中的一个容器属性,可用于解析对象的依赖项注入容器

启动之后, 我们可以ShellWindow创建定义的内容,并且呈现。

创建Prism的快速方法

1.首先, 打开VisualStudio的扩展, 安装Prism Template Pack包。

Prism Template Pack提供了什么?

1.Blank Project (空白示例项目)
2.Module Project (模块示例项目)
3.代码片段(用户快速创建属性,命令)

  • 3.1.propp – property (depends on BindableBase)
  • 3.2.cmd - DelegateCommand
  • 3.3.cmdg – DelegateCommand

2.安装完成之后, 再次打开VisualStudio, 将会发生,Prism Template Pack提供了多种项目模板, 用于快速构建基于Prism的应用程序, 如下所示:

注:同时,Prism提供了基于Xamarin的项目模板, 因为Prism是一个基于多个平台的框架, 详细见: Prism框架介绍

结语

本章节, 主要介绍了如何创建一个基于Prism的WPF项目, 以及其它方式快速创建基于Prism的项目模板。

到此这篇关于WPF创建Prism应用程序的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • WPF框架之Prism介绍

    什么是Prism? Prism是一个用于在 WPF.Xamarin Form.Uno 平台和 WinUI 中构建松散耦合.可维护和可测试的 XAML 应用程序框架. Prism历史 他最初由Microsoft Patterns & Practices 团队构建的项目, 目的是帮助WPF开发人员以简化编写.维护和扩展来设计应用程序.目前它是属于.NET基金会下的一个开源项目.并且经过财富100强等公司的多年的实践考验. Github https://github.com/PrismLibrary/

  • WPF框架Prism中区域Region用法介绍

    什么是区域(Region)? 在理解这个之前, 首先需要了解一下, 在最常见的开发模式当中, 我们去设计某个页面的时候, 实际上界面元素在设计的时候已经被固定. 举个简单的例子,当我们去设计如下页面, 它包含Header.Menu.Content内容. 因此我们可以为这个页面设计一些元素, 例如: 1.Menu 可以放置ListBox 2.Content 可以放置一个ContentControl 3.Header 可以放置一些ToolBar 注:为了演示需要, 对应区域的控件均采用TextBlo

  • WPF创建Prism应用程序

    创建Prism应用程序 1.第一步 首先, 创建一个基于.NetFramework 或.NetCore的WPF应用程序.如下所示: 2.第二步 为当前应用程序添加NuGet源, 打开NuGet管理器,安装Prism.DryIoc, 如下所示: 说明: 本文将以DryIoc容器为主讲解本系列的所有内容. 实际上, 在Prism7.2版本中, 已经引入了一些围绕IOC抽象的API更改.这最终将使得在选择容器之间切换更加容易,因为 API 在如何注册服务和视图方面完全相同. 您仍然可以访问容器,在 A

  • WPF框架Prism中模块Module用法

    什么是模块(Module)? 本质上来说, 对于一个应用程序而言, 特定功能的所有View.Logic.Service等都可以独立存在.那么意味着, 每个独立的功能我们都可以称之为模块.而往往实际上, 我们在一个项目当中, 他的结构通常是如下所示: 所有的模块都在一个项目当中, 这使得应用程序当中, 我们难以区分单独的模块, 它们似乎变成了一个整体. 所以,当我们开始考虑划分模块之间的关系的时候, 并且采用新的模块化解决方案, 它的结构将变成如下所示: 该项目包含了一个启动页, 并且在启动页当中

  • WPF框架Prism中对话框Dialog用法介绍

    什么是Dialog? 对话框实际上是我们应用程序经常用到的一个功能, 类如: Show.ShowDialog. 可以弹出一个我们指定的窗口, 仅此而已, 那么在Prism当中, Dialog指的是什么? Prism提供了一组对话服务, 封装了常用的对话框组件的功能, 例如: RegisterDialog/IDialogService (注册对话及使用对话) 打开对话框传递参数/关闭对话框返回参数 回调通知对话结果 创建Dialog流程 创建对话框,通常是一组用户控件 ,并且实现 IDialogA

  • 为WPF框架Prism注册Nlog日志服务

    无论是Nlog还是Serilog, 它们都提供了如何快速在各类应用程序当中的快速使用方法. 尽管,你现在无论是在WPF或者ASP.NET Core当中, 都可以使用ServiceCollection来做到着一点, 因为日志框架都提供了IServiceCollection的扩展. 但是, 如果现在你使用的是Prism 8.0的应用程序, Prism提供了多种容器的支持, 例如:DryIoc或者Unity, 这个时候我们如果现在这个基础上实现依赖注入,首先我们需要修改Prism当中创建容器的默认实现

  • WPF框架Prism中导航Navigation用法介绍

    使用场景 在普遍的业务场景当中, 必不可少的是页面切换, 而Prism就可以使用Navigation功能来进行页面导航, 在不同的场景当中会有各种用法, 例如在切换页面验证.传递参数.返回上一页.返回下一页等功能. 导航的基本条件 1.注册显示区域 2.注册导航页面 1.注册导航 注册视图类型或添加别名, 如果为指定别名,名称默认为当中类型的名称 public class ModuleAModule : IModule { public void OnInitialized(IContainer

  • WPF框架Prism中使用MVVM架构

    常见的MVVM框架 众所周知, 如果你了解WPF当中的ICommand, INotifyPropertyChanged的作用, 就会发现众多框架都是基于这些进行扩展, 实现其通知.绑定.命令等功能. 对于不同的MVVM框架而言, 大体使用上会在声明方式上的差异, 以及特定功能上的差别. 下面列举了常用的3个MVVM框架,他们的一些差异.如下所示: 功能↓ / →框架名 Prism Mvvmlight Micorosoft.Toolkit.Mvvm 通知 BindableBase ViewMode

  • WPF框架Prism中ViewModelLocator用法介绍

    建立连接 在WPF当中,需要为View与ViewModel建立连接, 我们需要找到View的DataContext, 如下所示: 建立连接的方式 如果你使用了解WPF当中如何绑定DataContext, 你应该能想到会有下面这些方式进行: XAML设置 Code设置 (构造函数注入 或 ViewModelLocator) XAML的方式: <UserControl.DataContext> <.../> </UserControl.DataContext> 代码的方式:

  • vs.Net2003无法打开或创建Web应用程序若干解决办法.

    昨天到今天搞了一整天,把人都要差点搞崩了! ,以后再也不能乱关机了,因为这次的大意,几乎所有的Net安装,调试问题都被我碰到了,还好,我一个个把他记录下来了,同时,在CSDN找了一些相关的解决方法,不敢独享,供大家相互学习交流之用. 起因是这样的,机子运行IE时假死,我用着不爽,就二话不说热启动,结果就出事了. 重新打开正在Vs2003.Net里面正在作的项目时,老半天没反应,机子变得异常慢,当然,出于职业的敏感,马上来了个Ctrl+Alt+Del,这下不好,CPU占用100%,一直高居不下,运

  • 使用Spring Boot创建Web应用程序的示例代码

    在这篇文章中,我们将探讨使用Spring Boot创建Web应用程序的细节. 我们将探索Spring Boot如何帮助你加速应用程序开发. 我们将使用Spring Boot构建一个简单的Web应用程序,并为其添加一些有用的服务. 1. 介绍 启动一个新项目的主要挑战之一是该项目的初始设置. 我们需要对不同的目录结构进行调用,并且需要确保我们遵循所有行业标准.对于使用Spring Boot创建Web应用程序,我们需要以下工具: 我们自己喜欢的IDE (我将使用IntelliJ) Maven JDK

随机推荐