iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何理解.NET MVVM设计模式
  • 752
分享到

如何理解.NET MVVM设计模式

2023-06-17 10:06:05 752人浏览 独家记忆
摘要

如何理解.net MVVM设计模式,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。MVVM 模式能够帮你把你程序的业务与展现逻辑从用户界面干净地分离开。保持程序逻辑与界面分离能够

如何理解.net MVVM设计模式,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

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

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

1-视图,封装 UI 与 UI 逻辑

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

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

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

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

如何理解.NET 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.提供数据验证与错误报告

  • 模型类典型地与封装了数据访问的服务一起使用。

看完上述内容,你们掌握如何理解.NET MVVM设计模式的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: 如何理解.NET MVVM设计模式

本文链接: https://www.lsjlt.com/news/288418.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何理解.NET MVVM设计模式
    如何理解.NET MVVM设计模式,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。MVVM 模式能够帮你把你程序的业务与展现逻辑从用户界面干净地分离开。保持程序逻辑与界面分离能够...
    99+
    2023-06-17
  • MVVM 设计模式:理解 JavaScript 数据流的艺术
    ...
    99+
    2024-04-02
  • 如何理解设计模式之桥模式
    本篇内容介绍了“如何理解设计模式之桥模式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!举个例子桥模式的主要...
    99+
    2024-04-02
  • 如何理解command设计模式
    本篇内容介绍了“如何理解command设计模式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!command...
    99+
    2024-04-02
  • .Net结构型设计模式之代理模式(Proxy)
    目录一、动机(Motivate)二、意图(Intent)三、结构图(Structure)四、模式的组成五、代理模式的分类:六、代理模式的具体实现七、代理模式的实现要点:1、代理模式的...
    99+
    2024-04-02
  • 怎样理解NET设计模式实例中的外观模式
    本篇文章给大家分享的是有关怎样理解NET设计模式实例中的外观模式,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、外观模式简介(Brief Introduction)外观模式,...
    99+
    2023-06-17
  • .Net设计模式之单例模式(Singleton)
    一、动机(Motivation) 在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性、以及良好的效率。 如何绕过常规的构造器,提供一种...
    99+
    2024-04-02
  • javascript中如何理解设计模式
    本篇内容介绍了“javascript中如何理解设计模式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • 如何理解JavaScript的设计模式
    本篇文章为大家展示了如何理解JavaScript的设计模式,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。  今天我们就聊一下这三个设计模式  单例模式 / 组合模...
    99+
    2024-04-02
  • 如何理解Java设计模式的解释器模式
    本篇内容主要讲解“如何理解Java设计模式的解释器模式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解Java设计模式的解释器模式”吧!一、什么是解释器模式定义:给定一个语言,定义一个文法...
    99+
    2023-06-25
  • 如何理解Java设计模式的状态模式
    本篇内容介绍了“如何理解Java设计模式的状态模式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、什么是状态模式定义:当一个对象的内在状态...
    99+
    2023-06-25
  • 如何理解Java设计模式的享元模式
    本篇内容介绍了“如何理解Java设计模式的享元模式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、引言大家都知道单例模式,通过一个全局变量...
    99+
    2023-06-25
  • 如何理解Java设计模式的装饰模式
    这篇文章主要介绍“如何理解Java设计模式的装饰模式”,在日常操作中,相信很多人在如何理解Java设计模式的装饰模式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理解Java设计模式的装饰模式”的疑惑有所...
    99+
    2023-06-25
  • 如何理解Java设计模式的命令模式
    本篇内容主要讲解“如何理解Java设计模式的命令模式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解Java设计模式的命令模式”吧!一、什么是命令模式命令模式是一个高内聚的模式,其定义为:...
    99+
    2023-06-25
  • 如何理解Java设计模式的单例模式
    这篇文章主要讲解了“如何理解Java设计模式的单例模式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解Java设计模式的单例模式”吧!一、什么是单例模式单例模式是一种常用的软件设计模式...
    99+
    2023-06-25
  • 如何理解Java设计模式的组合模式
    这篇文章主要介绍“如何理解Java设计模式的组合模式”,在日常操作中,相信很多人在如何理解Java设计模式的组合模式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理解Java设计模式的组合模式”的疑惑有所...
    99+
    2023-06-25
  • 如何理解Java设计模式的桥接模式
    这篇文章主要讲解了“如何理解Java设计模式的桥接模式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解Java设计模式的桥接模式”吧!一、什么是桥接模式桥接模式(Bridge Patt...
    99+
    2023-06-25
  • .Net行为型设计模式之解释器模式(Interpreter)
    目录一、动机(Motivate)二、意图(Intent)三、结构图(Structure)四、模式的组成五、解释器模式的代码实现六、解释器模式的实现要点:1、解释器模式的主要优点有:2...
    99+
    2024-04-02
  • 如何理解Java设计模式的职责链模式
    本篇内容介绍了“如何理解Java设计模式的职责链模式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、什么是职责链模式客户端发出一个请求,链...
    99+
    2023-06-25
  • .Net结构型设计模式之代理模式怎么实现
    这篇文章主要介绍了.Net结构型设计模式之代理模式怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇.Net结构型设计模式之代理模式怎么实现文章都会有所收获,下面我们一起来看看吧。一、动机(Motivate...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作