MVVM架构模式(一)WPF/C#工程的架构:MVVM架构的入门知识

一、简介

我在看别人的WPF/C#工程文件中,经常发现了这个几个关键字

View

ViewModel

Model

比如:

本文件概要介绍组成每个文件及文件夹内容

Behaviors
    控件行为,包含控件的附加属性等

Controls
    自定义控件文件夹,所有自定义控件全部放在该文件夹下

Converters
	转换器文件夹,如年龄转换,日期格式转换等

Icons
	图标集

Model
	数据模型,这里不包含数据库的数据模型,使用EF DBFirst,会自动生成edmx文件

Resources
	资源文件夹,包括静态和动态的资源,如ImageButton的Source

Resources/Localization
	区域化,用来存放多语言

Styles
	样式集合

Utils
	包含了帮助类和工具类等,如数据库帮助类,文件IO帮助类,消息队列类

Validate
	用于存放对数据进行验证的类,如IP地址验证,年龄验证,日期验证等

View
	视图,用于存放窗体

ViewModel
	逻辑处理和更新界面

二、MVVM

百度了好久,终于知道它是用MVVM架构来搭建该软件系统的。

参考https://zhidao.baidu.com/question/2269971336802684948.html

        简单的说,ViewModel就是View与Model的连接器,View与Model通过ViewModel实现双向绑定。
Model:很简单,就是业务逻辑相关的数据对象,通常从数据库映射而来,我们可以说是与数据库对应的model。
View:也很简单,就是展现出来的用户界面。

ViewModel:就是与界面(view)对应的Model。因为,数据库结构往往是不能直接跟界面控件一一对应上的,所以,需要再定义一个数据对象专门对应view上的控件。而ViewModel的职责就是把model对象封装成可以显示和接受输入的界面数据对象。
        基本上,绝大多数软件所做的工作无非就是从数据存储中读出数据,展现到用户界面上,然后从用户界面接收输入,写入到数据存储里面去。所以,对于数据存储(model)和界面(view)这两层,大家基本没什么异议。但是,如何把model展现到view上,以及如何把数据从view写入到model里,不同的人有不同的意见。

        MVC派的看法是,界面上的每个变化都是一个事件,我只需要针对每个事件写一堆代码,来把用户的输入转换成model里的对象就行了,这堆代码可以叫controller。
        而MVVM派的看法是,我给view里面的各种控件也定义一个对应的数据对象,这样,只要修改这个数据对象,view里面显示的内容就自动跟着刷新,而在view 里做了任何操作,这个数据对象也跟着自动更新,这样多美。所以:
     
      至于viewmodel的数据随着view自动刷新,并且同步到model里去,这部分代码可以写成公用的框架,不用程序员自己操心了。

猜你喜欢

转载自blog.csdn.net/xpj8888/article/details/86231866