快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

澳门新葡亰平台游戏app_龟发之家论坛



回首

上一篇,我们先容了关于控件模板的用法,本节我们将继承阐明WPF加倍实用的内容,在大年夜型的项目中若何应用Prism框架,并给予Prism框架来构建根基的利用框架,并且若何来设计项目的架构和模块,下面我们就来一步步开始吧。

本文大年夜纲

1、Prism框架下载和阐明

2、Prism项目预览及简单先容。

3、Prism框架若何在项目中应用。

Prism框架下载和阐明

P澳门新葡亰平台游戏apprism框架是针对WPF和Silverlight的MVVM框架,这个大年夜家应该之前,都有所耳闻,关于该框架的详细阐明,可以参考如下地址:

Prism框架下载

Prism框架经由过程功能模块化的思惟,来讲繁杂的营业功能和UI耦合性进行分离,经由过程模块化,来最大年夜限度的低落耦合性,很得当我们

进行类似插件话的思惟来组织系统功能。并且模块之间,经由过程宣布和订阅变糊弄完成信息的通信。而且其开放性支持多种框架集成。

Prism项目预览及简单先容

框架下载完毕后,解压后的文件的组织模式如下:

我们先打开Hello World QuickStart.bat看看

上面是项目的组织布局,关于该项目内部的代码布局和写法,我们来逐一阐发和解释。

A、先看看HelloworldModule的代码和内容。

Views文件夹中包孕了UI视图界面内容。

此中只是包孕了一个Textbox文本控件,其他没有太多的内容。

接着看看该设计文件对应的后台cs文件中的代码。

也是没有什么特其余内容。接着我们看看Module中的内容代码:

上面对付Module中的代码,我们就简单的阐发完毕了,当然这个模块没有法子自力的运行,我们肯定要将模块加载到宿主或某个节制的主界面中,把它显示出来即可,下面我们就来看看Prism最关键的部分。

B、宿主或主界面。

先看看APP文件

设计视图中未指澳门新葡亰平台游戏app定,那么肯定是在cs文件中的某处直接或简介指定。

公然,这里采纳了BootStrapper来完成Run措施,实现利用的启动,我们可以来深挖,看看该文件中都包孕什么内容。

接着,我们来看看Shell中的内容:

我们在来看看shell里面有没有什么特殊的代码,打开后台cs文件

并无任何特殊的内容。以是我们可以大年夜概的懂得到了Prism的运行机制和流程,那么运行后的效果如下:

相符预期的目标,下面我们将继承深入的掘客Prism的强大年夜之处。

Prism框架若何在项目中应用

Prism是一个强大年夜的Mvvm框架,下面我们将重点解说若何在项目应用Prism供给的根基功能,完成基于MVVM的WPF项目的框架设计和开拓,包括利用法度榜样的架构。

项目的办理规划布局,项目采纳Prism作为UI框架,NHiberia+Unity作为ORM和IOC框架。

下面我们就来一步步解析项目中的每个部分的细节和终极项目若何把这些细节组织起来的做一个整体布局上的阐明。关于其他的分层设计布局澳门新葡亰平台游戏app我就不多说了,只关注Prism部分的内容。

1、关于对Prism的根基封装

为什么不直接应用Prism,我们盼望开拓职员的进修资源更低,以是,我们队Prism的一些措施进行了封装,更相符开拓职员之前认识的MVVM模式。

关于封装的详细内容,我们后续会看到代码。

2、关于Infrastructure根基举措措施层定义

3、详细的模块定义

4、望见地度榜样利用宿主的定义:

经由过程上面,我们先容了根基的项目和详细的模块和宿主模块的定义,下面我们就来具体的阐发下Prism若何加载模块的并且模块间若何通信,若何完成营业功能的完备流程:

在之前先容HelloWorld的时刻,我们有简单的先容了Prism的基础流程是宿主会在Bootstrappter中对模块进行装载并初始化,下面我们来看看我们在我给出的例子中的详细历程。

a、Shell的定义:

与之前的差别便是在于,我们原本是手写的字符串,这里经由过程零丁的类定义成静态的常量成员,我们能够防止名称掉足的可能。同时我们也可以避免由于某处界面上Region符号的变更,由于某处没有改动,而造成不合步,运行掉足的环境的发生,更轻易统一的治理。详细的根基举措措施层中关于RegionType的定义如下:

接着查看Shell的后台cs代码:

///

/// MainWindow.xaml 的交互逻辑///

[Export]public partial class Shell : Window

{public Shell()

{InitializeComponent();

}

////// 设置ViewModel

//////

/// This set-only property is annotated with theso it is injected by MEF with/// the appropriate view model.

///[Import]

[SuppressMessage("Microsoft.Design", "CA1044:PropertiesShouldNotBeWriteOnly", Justification = "Needs to be a property to be composed by MEF")]ShellViewModel ViewModel

{set

{this.DataContext = value;

if (this.DataContext != null){

((ShellViewModel)this.DataContext).OnSt澳门新葡亰平台游戏appatusChanged += new Actionstring>(SystemStatusManagementEventHandler);}

}}

public void SystemStatusManagementEventHandler(string parameter)

{if (parameter.IsNullOrEmpty())

{throw new ArgumentNullException("无法完成操作");

}

switch (parameter){

case HM_EMSTS.WorkStation.Infrastructure.Men澳门新葡亰平台游戏appuParams.Max:this.WindowState = System.Windows.WindowState.Maximized;

break;case HM_EMSTS.WorkStation.Infrastructure.MenuParams.Min:

this.WindowState = System.Windows.WindowState.Minimized;break;

case HM_EMSTS.WorkStation.Infrastructure.MenuParams.Close:if (MessageBox.Show("是否退出系统?", "退出系统?", MessageBoxButton.OKCancel, MessageBoxImage.Question) == MessageBoxResult.OK)

{this.Close();

}break;

}}

}

您可能还会对下面的文章感兴趣: