知识大全 .NET MVVM设计模式简介

Posted 视图

篇首语:永不毁灭的无价之宝,是一个的学问。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 .NET MVVM设计模式简介相关的知识,希望对你有一定的参考价值。

.NET MVVM设计模式简介  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  MVVM 模式能够帮你把你程序的业务与展现逻辑从用户界面干净地分离开 保持程序逻辑与界面分离能够帮助解决很多开发以及设计问题 能够使你的程序能更容易的测试 维护与升级 它也能很大程度的增加代码重用性 并让开发者与界面设计者更容易地相互合作

  使用 MVVM 模式 程序的 UI 和其背后的展现与业务逻辑将被分离至三个类中

   视图 封装 UI 与 UI 逻辑

   模型视图 封装展示逻辑与状态

   模型 封装程序的业务逻辑以及数据

  MVVM 模式是展示 模型模式的变种 它优化了一些 WPF 的核心特性 例如数据绑定 数据模版 命令以及行为 在 MVVM 模式中 视图通过数据绑定以及命令行与视图模型交互 并改变事件通知 视图模型查询观察并协调模型更新 转换 校验以及聚合数据 从而在视图显示

  下图展示了 MVVM 类以及它们之间的交互

  

     视图类

  视图的责任便是定义用户在屏幕上能看到的一切的结构以及外观 理想的视图背后的代码只包含调用 InitializeComponent 方法的构造函数 视图通常扮演以下关键角色

  视图是可视化元素 例如窗口 页面 用户控件或者数据模版

  视图定义了包含在视图里的控件以及可视化层以及样式

  视图通过 DataContext 属性应用视图模型

  绑定了控件以及数据的属性以及命令被视图模型暴露出来

  视图可以定制化视图与视图模型间数据绑定行为

  视图定义以及处理 UI 可视化行为例如动画

  视图背后的代码实现了用 XAML 很难表达的可视化行为

  视图模型类

  视图模型在 MVVM 模式中为视图封装了展示逻辑 它并不是直接引用视图或者任何其他关于视图特定的实现或者类型 视图模型实现了属性以及命令使得视图进行数据绑定 并通过改变事件通知来提醒视图状态已经改变了 视图模型提供的属性和命令定义了提供给 UI 的功能 但是视图定义了如何渲染的功能

  视图模型负责协调视图与任何需要的模型类的交互 很典型的 视图模型与视图类有着一堆多的关系 视图模型可以选择直接将模型类暴露给视图 因此视图的控件能够直击进行数据绑定 视图模型可以转换或者操纵模型数据所以能够很容易被视图使用

  很典型的 视图模型会定义能被展现在 UI 上并被用户调用的的命令或者行为 一个通用的例子就是当视图模型需要提交命令时会允许用户提交数据到网络服务或者数据库 视图可以选择用一个按钮来展示所以用户能够点击该按钮提交数据 典型地 当命令编程不可用的 它相关的 UI 展示也变得不可用 视图模型通常扮演下面这些关键角色

  模型视图是非可视化类 它封装了展现逻辑

  视图模型是可以独立于视图与模型调试的

  视图模型很典型地是不直接引用视图的

  视图模型实现了视图用来数据绑定的属性与命令

  视图模型通过改变提醒事件通知视图状态的改变 INotifyPropertyChanged 与 INotifyCollectionChanged

  视图模型协调视图与模型的交互

  视图模型可以定义视图展现给用户的逻辑状态

  模型类

  model 在 MVVM 模式中封装了业务逻辑以及数据 业务逻辑定义了像所有检索和程序数据管理相关的程序逻辑一样 用来确保所有的保证数据持久与有效的业务规则被应用 最大化代码重用 模型不能包含任何特定的情况 特定的用户任务以及程序逻辑

  典型的有模型为程序展现了客户端域模型 模型也可能包含支持数据访问与缓存的代码 即使有一个分离的数据库或者服务被使用 模型与数据房分层通常被作为数据访问或呜呜结构而生成 例如 ADO NET 尸体矿井唉 WCF 数据服务 或者 WCF RIA 服务

  模型层实现了轻松绑定视图的功能 这通常意味着它支持通过 INotifyPropertyChanged 与 INotifyCollectionChanged 进行属性与集合更改通告 展现对象集合的模型类典型地源自 ObservableCollection<T>类 该类提供了对 INotifyCollectionChanged 接口的实现

  模型也能通过 IDataErrorInfo 接口支持数据验证以及错误报告 这些接口允许当数值改变时的 WPF 数据绑定被通知 从而更新界面 模型通常扮演如下的关键角色

  模型类是不可视类 它封装了程序数据

  模型类不直接应用视图或视图模型类

  模型类不依赖于它们是如何实现的

  模型类是典型地通过 INotifyPropertyChanged/INotifyCollectionChanged 接口提供属性与集合更改事件的

  模型类很典型地继承自 ObservableCollection<T> 类

  模型类是很典型地通过 IDataErrorInfo/INotifyDataErrorInfo 提供数据验证与错误报告

cha138/Article/program/net/201311/12389

相关参考

知识大全 关于ASP.NET应用程序规划与设计

关于ASP.NET应用程序规划与设计  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  简介    

知识大全 新数据网格简介

  新的DataGridView是NET中的一个新控件是针对NETx中功能较差的标准DataGrid控件而设计的MatthewMacDonald在本文中论述了许多改进包括DataGridView支持大

知识大全 技术介绍 新数据网格简介

  新的DataGridView是NET中的一个新控件是针对NETx中功能较差的标准DataGrid控件而设计的MatthewMacDonald在本文中论述了许多改进包括DataGridView支持大

知识大全 ASP.NET简介

ASP.NET开发宝典:ASP.NET简介  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  第章搭

知识大全 ASP.NET 简介

ASP.NET简介  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  不仅仅是ActiveServe

知识大全 ADO.NET简介(附图)

跨时代的改进:ADO.NET简介(附图)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ADON

知识大全 ASP.NET项目开发指南:数据缓存简介

ASP.NET项目开发指南:数据缓存简介  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  &nbs

知识大全 ADO.NET3.5的高级特性简介

ADO.NET3.5的高级特性简介  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在VS中ADO

知识大全 ASP.NET Ajax Library功能简介

ASP.NETAjaxLibrary功能简介  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  AS

知识大全 ASP.NET入门教程 8.1 写入数据的简介

ASP.NET入门教程8.1写入数据的简介  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!