当前位置:首页 > 申请书大全 > 工作机制范本【Prism中的Interaction机制的研究及改进】
 

工作机制范本【Prism中的Interaction机制的研究及改进】

发布时间:2019-05-07 03:52:59 影响了:

  摘要:微软的Prism开源框架,非常适合作为复杂界面程序的框架库。该文对Prism库中的Interaction机制及源码进行了分析,并结合项目实际情况进行了改进,大大简化了其实现过程。
  关键词:Prism;MVVM
  中图分类号: TP311文献标识码:A文章编号:1009-3044(2012)21-5110-03
  MVVM是当前最流行的界面开发模式,尤其在它配合WPF后,功能更强大。但是,由于MVVM是在WPF出现后才发明的设计模式,WPF对它的支持不够好。所以,使用MVVM模式开发项目,在界面交互这些以往很简单的问题上,往往需要比较复杂的代码。Prism库提供了很多的方法来支持MVVM模式。其中的Interaction机制能够更简便的处理界面交互问题。本人通过Interaction机制在项目中的实际应用,简化了它的使用方式。
   1 Prism和MVVM介绍
  Prism开源框架是由微软Patterns & Practices团队所开发,目的在于帮助开发人员构建松散耦合的、更灵活、更易于维护并且更易于测试的WPF应用或Silverlight应用以及Windows Phone 7应用。使用Prism可以使程序开发更趋于模块化,整个项目将由多个离散的、松耦合的模块组成,而各个模块又可以又不同的开发者或团队进行开发、测试和部署。
  MVVM模式:MVVM模式是专为WPF打造的用于分离界面和程序逻辑的开发模式。它是MVC的变种。MVC是最早的为大家所熟知的开发界面程序的模式。但是它并不能完全干净的分离逻辑和界面代码。MVVM借助于WPF的binding功能可以满足这个需求。MVVM是Model-View-ViewModel的简写。它把程序分为三层:界面呈现(view),界面逻辑(ViewModel),业务逻辑和数据(Model)。ViewModel用于和View中的控件元素绑定,响应命令及事件处理。
   2 MVVM模式中如何实现界面交互
  通常一个界面程序在响应事件或执行命令前会与用户有简单的交互,像是notification或confirmation messagebox。但是在MV VM模式中,这个交互是令人头痛的。如果你用普通的messagebox,它将会破坏MVVM的规则(在viewmodel中不应该直接引用控件,这违背了界面和业务代码分离的原则)。MVVM模式中,一般有两种方式来实现这种交互:
  方式1.创建一个Service来显示交互的控件,viewmodel能够调用这个Service。这样防止了View和ViewModel的直接引用。
  方式2. ViewModel触发一个事件,View定制这个事件,来显示交互的界面。这种方式很好的隔离了界面和逻辑代码。但是可能创建很多事件,杂乱的放在VIewModel和View两侧,不好管理。
   3 Prism库的Interaction机制
  Prism提供了一个Interaction机制实现了这两种方式。
  第一种方式很简单,Prism提供了InteractionService类。用户通过Service直接调用交互控件。
  第二种方式在View中将一个在ViewModel中声明的Interaction Request Object和一个Behavior绑定。ViewModel触发这个Inter action Request,相应的行为将被执行。Interaction Request Object封装了具体的交互请求,响应函数,并且通过事件与View通信。View订阅这个事件,并且创建一个Behavior(将被绑定到ViewModel提供的Interaction Request Object)。Prism库提供了IInteraction Request接口和InteractionRequest类。ViewModel将定义一个InteractionRequest对象,当要触发交互行为时调用Raise函数,并指定参数:类型T的上下文对象和回调函数(交互完成后被调用)。这个上下文对象允许ViewModel传递数据和状态给View。并且在交互完成后,ViewModel能得到变化后的数据和状态。
  Prism提供了预定义的上下文对象Notification和Confirmation。Notification用于显示提示信息,只有Title和Content属性。Confirmation继承于Notification,增加一个属性Confirmed。它用于实现MessageBox类型的交互,用于得到用户的Yes,No的响应。
  下面是InteractionRequest在Viewmodel中的示例代码:
  public IInteractionRequest ConfirmCancelInteractionRequest
  {
  get
  return this.confirmCancelInteractionRequest;
  }}
  this.confirmCancelInteractionRequest.Raise(
  new Confirmation("Are you sure you wish to cancel"),
  confirmation =>
  {
  if (confirmation.Confirmed)
  {
  this.NavigateToQuestionnaireList();
  }
  });
  }
  ConfirmCancelInteractionRequest用于View的数据绑定。
  Interaction Request Object中封装了交互逻辑,而交互界面定义在View中。这里用Behavior模式来封装交互界面,它运行开发者绑定任一种适合的Behavior到Interaction Request Object。Prism库定义了InteractionRequestTrigger来监听Viewmodel发出的Inter action Request。当ViewModel调用Raise函数时,InteractionRequestTrigger将调用指定的行为。Prism库提供PopupChildWindowAc tion类来显示交互界面。通过它的ContentTemplate属性,开发者可以定制交互界面。下面是xaml文件中相应的代码:

猜你想看
相关文章

Copyright © 2008 - 2022 版权所有 职场范文网

工业和信息化部 备案号:沪ICP备18009755号-3