首页 > 其他分享 >MVVM教程(一):MVVM简介与准备工作

MVVM教程(一):MVVM简介与准备工作

时间:2022-11-29 17:04:17浏览次数:73  
标签:教程 http MVVM 简介 程序 org NET com


如果你对MVVM的概念还是不了解,可以参看下面链接:
​​​http://baike.baidu.com/view/3507915.htm​

我们以WPF+MVVM的本地桌面程序为背景,这样一来我们可以不去操心服务器那部分的事情,更加专注我们的MVVM。我打算把最重要的部分放到开头来讲,而接下来这最重要的部分却是全篇教程唯一没有代码的部分。好,下面开始。

MVVM不是什么框架,也不是什么代码生成器,它其实就是一种建议而已。很多朋友对于这个词很困惑:到底我怎么样做,我的程序才是一个标准的MVVM模式?其实我们没有必要去纠结中一点,因为(至少我)还没有见到任何一个程序能实现100%的MVVM。所以我们需要做的是,理解MVVM,然后采用MVVM的思想+现成的框架去搭建出一个程序即可,至于是不是标准的MVVM,不要过分去纠结。我看到过一些失败的例子:有些人为了实现零输出的后台代码,竟然采用一些更加繁琐晦涩的方法来达到此目的——这样就背离了MVVM的初衷了。我个人认为,后台代码不是恶魔,当用则用,但不要滥用。

那么,MVVM是解决所有问题的最终解决方案吗?当然不是。MVVM只解决了界面和数据之间通信的问题,但是除此以外,一般的程序还面临其他很多问题,例如数据的存储,远程通信,耦合问题,效率问题,等等。

这个教程还是以一个小程序为例子,而这次我打算用一个功能非常简单的程序来讲MVVM:我们来做一个电话簿。但是首先你要预习以下知识:
1. 什么是Model,View,ViewModel?
2. 什么是XAML?以及XAML一些最基本的语法
3. 什么是事件(event)?
4. 什么是接口?什么是INotifyPropertyChanged接口?
5. 什么是绑定?绑定这几种方式(OneWay, TwoWay, OneWayToSource)的不同点是什么?

接下来,我们来讨论一下将要用到的工具。

首先是VisualStudio 2010,这个没什么可说的,大家都知道,你也不要吝啬了,升级到2010没有任何坏处。

MvvmLight Toolkit——这是一个很轻的MVVM框架。麻雀虽小,五脏俱全,应该能满足我们小程序的所有需求。网址:​​http://mvvmlight.codeplex.com/​

NuGet——这个工具类似于Maven,主要是为你的项目解决第三方DLL的问题。我们的项目经常要使用其他的DLL,比如Json.NET,而每次去人家的页面下载,然后再复制粘贴到你的项目中,最后再引用,是个很重复单调的过程,用NuGet可以比较优雅的帮你解决这些烦恼。网址:​​http://nuget.org/​

MEF——Managed Extensibility Framework,这个尚在考虑之中。有些朋友可能对IoC(Inversion of Control)或者Dependency Injection不熟悉,所以我还在犹豫要不要在例子中使用这个。相关知识网址:​​http://en.wikipedia.org/wiki/Inversion_of_control​​​; ​​http://en.wikipedia.org/wiki/Dependency_injection​​​Caliburn Micro——另一个MVVM框架。我比较偏爱这个框架。它的思想很巧妙,而且用起来也很方便,上手也很容易。网址:​​http://caliburnmicro.codeplex.com/​

Json.NET——我们有可能会用到这个开源库。原因在于我们可能需要一个简单的数据存储层,所以我打算用Json.NET将DataSet转成BSON(​​http://bsonspec.org/​​​),然后存入本地文件。读取时候可以用Json.NET将BSON转回DataSet。网址:​​http://json.codeplex.com/​

此外,MVVM的框架非常之多,微软有个Prism,但是我不准备用它做例子,因为Prism操心的事情太多了,这个简单教程讲不了那么多。其实最主要的是,我对Prism不熟悉。

如果你对美化UI感兴趣,可以试试这两个东西:
Ookii.Dialogs —— ​​​http://www.ookii.org/software/dialogs/​​​MahApps.Metro —— ​​http://www.theleagueofpaul.com/metro​


标签:教程,http,MVVM,简介,程序,org,NET,com
From: https://blog.51cto.com/u_15834343/5896022

相关文章

  • WPF_MVVM框架(5)
    1.NuGet引用MVVM框架包引入该框架包之后,默认会在目录下创建ViewModel层的示例代码2.第二步,通过在MainViewModel中创建一些业务代码,将其与MainWindow.xaml通过......
  • systemd进程管理工具实战教程【转】
    1.0systemd介绍·systemd是目前Linux系统上主要的系统守护进程管理工具,由于init一方面对于进程的管理是串行化的,容易出现阻塞情况,另一方面init也仅仅是执行启动脚本,并不......
  • 传奇外网开服教程——GEE传奇外网全套架设教程
    版本不同,所用的引擎和配置也会不同,但是架设方法都是大同小异,今天明杰给大家分享GEE引擎的外网架设教程。​需要准备的东西:DBC200版本,补丁,客户端,服务器,备案域名,​(版本(Mirserv......
  • Flex 布局教程:语法篇
    Flex布局教程:语法篇转载自:阮一峰的网络日志Flex布局教程:语法篇网页布局(layout)是CSS的一个重点应用。布局的传统解决方案,基于盒状模型,依赖display属性+po......
  • 矩池云|GPU 分布式使用教程之 TensorFlow
    GPU分布式使用教程之TensorFlowTensorFlow提供了6种策略实现分布式计算,各个策略详情请参考官方文档。本文档使用MirroredStrategy实现单机多卡分布式,MultiWorkerMirr......
  • HTML5 Canvas | w3cschool菜鸟教程
    HTML5Canvas<canvas>标签定义图形,比如图表和其他图像,您必须使用脚本来绘制图形。。在画布上(Canvas)画一个红色矩形,梯度矩形,彩色矩形,和一些彩色的文字。你的浏览器不支持HT......
  • Github for Windows使用图文教程
    Git已经变得非常流行,连Codeplex现在也已经主推Git。Github上更是充斥着各种高质量的开源项目,比如ruby on rails,cocos2d等等。对于习惯Windows图形界面的程序员来讲,Github......
  • RNA-seq 详细教程:分析准备(3)
    学习目标了解RNA-seq和差异表达基因的分析流程了解如何设计实验了解如何使用R语言进行数据分析1.简介在过去的十年中,RNA-seq已成为转录组差异表达基因和mRNA......
  • 用服务器安装电脑教程 远程连接
    教程方法;准备1.服务器一台注:购买时可选一下要用的系统2.RD客户端APP这以在某个平台买的服务器为例子!服务器出售地址www.zywln.cnRD客户端APP下载https://wwt.lan......
  • GO语言从入门到精通全套教程
    资源简介本套教程分为两部分:包括Go编程基础和GoWeb基础。从GO语言基础知识的讲解到后面的实战开发,让您快速掌握GO语言编程技术。教程画质高清。下载地址:https://pan.ba......