当前位置:网站首页>MVVM和MVVMLight简介及项目开发(一)
MVVM和MVVMLight简介及项目开发(一)
2022-07-23 22:09:00 【Pzz_Lite】
MVVM和MVVMLight简介及项目开发(一)
一、MVVM及MVVMLight简介
注:下面使用 Microsoft Visual Studio2022,简介引自导师教学
1、MVVM是Model-View-ViewModel的简写,主要目的是 为了分离视图(View)和模型(Model),由MVP(Model-View-Presenter)模式与 WPF结合的应用方式时发展演变过来的一种新型架构。的耦合,通过数据绑定和命令来处理UI属性及事件驱动。
(1)、MVVM模式和MVC模式一样,主要目的是分离视图(View)和模型(Model),有几大优点。
①. 低耦合:视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的View上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。
②. 可重用性:可以把一些视图逻辑放在一个ViewModel里面,让很多View重用这段视图逻辑。 ③. 独立开发:开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面 设计,使用Expression Blend可以很容易设计界面并生成xml代码。
④. 可测试:界面素来是比较难于测试的,而现在测试可以针对ViewModel来写。
2.MVVM Light框架
(1)、MVVMLight是一个实现MVVM模式的轻量级框架,可用于WPF、Windows8等项目开发。
(2)、如何在你的WPF应用中使用MVMLight 主要使用方式有两种; 一种是去官网上下载MVVMLight Toolkit,安装之后,VS模板中会出现MvvmLight项目模板,你可以 直接使用该项目模板来创建项目了。 里面会包含默认的ViewModelLocator和MainViewModel,MainViewModel就是你Main视图的 ViewModel了,而ViewModelLocator是一个全局的ViewModel加载注册器。
(3)、另一种方式就是去NuGet上安装,这无疑是最便捷的事了。在NuGet 工具箱上搜索 MVVM Light,可 以看到两个项目,一个是MVVM Light , 一个是 MVVM Light libraries only。 当前版本是5.3,说明MVVM Light的更新速度还是挺快的,Prerelease中还有 V5.4 的 ALAPHA 版 本。 Nuget上这两个项目的区别就是MVVM Light除了必要的GalaSoft 组件之外,还会额外添加相关分层文 件目录形成简单的MVVMLight成型框架。
3.使用MVVMLight框架创建一个MVVM项目
(1)、打开Visual Studio 2022或其他版本,创建新项目–>搜索“WPF应用”–>找到“WPF 应用(.NET Framework)客户端应用程序”,点击进去配置新项目,重命名项目名称,指定项目保存位置,解决方案可以与项目名称一样,框架选择“.NET.Framework 4.7.2”或者更高版本然后创建。
(2)、在VS上面的菜单栏中找到工具–>NuGet包管理器–>管理解决方案的NuGet程序包–>点击浏览–>联网搜索“MVVmLight”–>点击第一个搜索结果大概大小为2.8M左右,然后在右边视图中勾选对应的项目给该项目安装,版本选择稳定版本点击安装并且接收服务条款。
(3)、安装MvvmLight框架后可以在右侧“解决方案资源管理器”的“引用”中可以看到引用的相应框架。
4.MVVM分层架构
(1)、View负责前端展示,与ViewModel进行数据和命令的交互。
(2)、ViewModel,负责前端视图业务级别的逻辑结构组织,并将其反馈给前端。
(3)、Model,主要负责数据实体的结构处理,与ViewModel进行交互。

(4)、在项目“解决方案资源管理器”中添加以下文件夹,如必需Model–>View–>ViewModel架构外还要会用到的NetworkManager(用于存放网络请求类)–>Resources(用于存放资源 例如xib,storyboard,图片,plist,音频,视频)–>Util(用于存放我们定义的分类和扩展或者工具类)–>Styles(页面按钮样式类)等等。
(5)、现在添在这里插入图片描述
加一个页面按钮的样式类,把该类存放在PublicClass文件夹中,选中PublicClass文件夹鼠标右键–>添加–>类–>命名类名称确定,
(6)、代码如下:Button(表示Windows按钮控件)、CornerRadius(表示矩形角的半径)、DependencyProperty(表示可通过诸如样式、数据绑定、动画和继承等方法设置的属性)。
边栏推荐
猜你喜欢

Introduction to I2C Principle & Application of esp32

uniapp使用canvas写环形进度条

Altium Designer - schematic diagram of Arduino uno & PCB diagram (self-made Arduino board)

为了一劳永逸而写的数独

Taobao assistant is disabled. What is the reason for using the big Taoying import data package to upload the baby prompt "the main image is required and cannot be empty"? How to solve it?

Neo4j application

记忆化搜索 - DP

人生总需要一点激情

Apprentissage Lambda (utilisation du comparateur après tri, regroupement après collecte avec collectors.groupingby)

数据库系统概论第五版课后习题——第一章 绪论
随机推荐
Pulsar open source message queue_ Understand pulsar --- pulsar work notes 001
Storage structure and management disk. It's a bit like installing Win98. You need to partition and format the hard disk first
详解NAT技术
MySQL的JDBC編程
How to add an operator in ONEFLOW
Neo4j应用
王学岗视频编码————MediaCodec编解码
Programmation JDBC pour MySQL
记忆化搜索 - DP
Neo4j应用
实时监控Mysql数据库变化_进行数据同步_了解Canal_---Canal工作笔记001
Machine learning exercises -- right rate regression
University database creation and query practice -- database table design
机器学习习题——对率回归
lambda學習(sort後面的Comparator的使用,collection後使用Collectors.groupingBy分組)
程序员成长第二十六篇:如何开好每日晨会?
Taobao assistant is disabled. What is the reason for using the big Taoying import data package to upload the baby prompt "the main image is required and cannot be empty"? How to solve it?
Programmer growth Article 26: how to hold a good daily morning meeting?
jedis 6---redisson和jedis的入门和不同
怎么开户买收益百分之六的理财产品呢?