`
pcajax
  • 浏览: 2200928 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

 
阅读更多

如果你对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://www.lmwlove.com/ac/ID796

分享到:
评论

相关推荐

    MVVM in Delphi: Architecting and Building Model View ViewModel Applications

    "MVVM in Delphi: Architecting and Building Model View ViewModel Applications" 2016 | ISBN-10: 148422213X | 143 pages | PDF, EPUB | 23 MB Dive into the world of MVVM, learn how to build modern ...

    刘铁猛wpf MVVM教程所实现的demo和项目

    【标题】:“刘铁猛wpf MVVM教程所实现的demo和项目”是基于Windows Presentation Foundation(WPF)框架,采用Model-View-ViewModel(MVVM)设计模式的一个教学实践项目。刘铁猛,可能是一位知名的IT教育专家,通过...

    Android mvvm 框架,最流行的mvvm demo

    - **LiveData**:一个生命周期感知型的数据容器,当数据发生变化时,会自动通知关联的观察者,特别适合于配合ViewModel使用,保证在Activity或Fragment重建时仍然能接收到数据更新。 - **ViewModelProvider**:用于...

    MVVM入门与提高

    **在WPF中实现MVVM:** WPF提供了强大的数据绑定和依赖属性功能,使得MVVM模式得以实现。以下是一些关键概念: - **数据绑定**:View的属性可以绑定到ViewModel的属性,当ViewModel的属性改变时,View会自动更新,...

    WPF教程MVVM模式实例

    本教程是针对初学者设计的一个使用Visual Studio 2010开发的WPF(Windows Presentation Foundation)应用程序实例,它深入介绍了MVVM(Model-View-ViewModel)设计模式。MVVM是一种流行的设计模式,特别适用于创建...

    MVVM(GalaSoft.MvvmLight)简单小项目和其它MVVM框架(CommunityToolkit.Mvvm)

    MVVM(Model-View-ViewModel)是一种软件架构设计模式,它是实现视图和模型分离的一种方式,广泛应用于现代桌面应用程序和移动应用程序中。MVVM模式由微软的一些开发者提出,旨在简化基于Windows Presentation ...

    Silverlight的MVVM教程

    ### Silverlight的MVVM教程:理解与应用 #### 模型-视图-ViewModel (MVVM) 设计模式解析 **Silverlight MVVM教程**旨在深入探讨基于Silverlight的MVVM开发模式,这是一种广泛应用于现代用户界面开发的设计模式,...

    MVVM在Winform应用实例

    DevExpress是一个提供丰富UI控件和开发工具的库,它为Winform提供了更加强大和灵活的组件,可以方便地在MVVM模式下工作。 综上所述,这个实例可能涵盖以下知识点: 1. **MVVM设计模式**:理解MVVM的基本概念,包括...

    dotnet-communitytoolkit-mvvm

    CommunityToolkit.Mvvm 是一个现代、快速且模块化的 MVVM 库,作为 .NET 社区工具包的一部分。它围绕以下原则构建:平台和运行时独立、易于选取和使用、点菜自由选择要使用的组件、参考实现、精益和性能。 MVVM ...

    RxSwift-MVVM-iOS:SwiftMVVM是使用MVVM架构以Swift编写的示例iOS应用

    带有RxSwift的MVVM RxSwiftMVVM是使用MVVM架构以RxSwift编写的示例iOS应用。示例应用运行样本克隆此存储库。 git clone git@github.com:yokurin/RxSwift-MVVM-iOS.git在Xcode中打开RxSwiftMVVM.xcworkspace 。 跑...

    MVVM-Sidekick:基于RX和Await的现代轻量级MVVM框架

    本项目是一个基于RX与await等新技术的轻量级MVVM框架。其核心是ViewModelBase类型,你甚至可以把它拿出去和别的框架一起使用。 该项目的目的:该项目从Prism和Reactive UI / Command项目中学到了很多好主意,并且...

    MVVM Demo for WPF

    I tend to see alot of people who fail to exploit the benefits of DataBinding in WPF, and not enough people are aware of the benefits of the MVVM pattern, which will be the main purpose of this lesson...

    MVVM light小实例

    MVVM Light(Model-View-ViewModel Light)是由 Laurent Bugnion 创建的一个轻量级框架,它简化了在 Silverlight、WPF 和 Xamarin 平台上的 MVVM(Model-View-ViewModel)设计模式的实现。这个框架提供了许多便利的...

    WPF_MVVM_入门教程

    MVVM是一种流行的应用程序架构,尤其适用于UI(用户界面)与业务逻辑分离的情况,它允许开发者更专注于界面的设计和数据的管理。 首先,WPF的核心特性之一是数据绑定(Data Binding),这是连接UI和数据模型的重要...

    mvvm_test:一个可与MVVM一起使用的简单WPF应用程序

    MVVM测试一个简单的WPF应用程序可与MVVM一起使用。建筑需要构建 。 $ git clone https://github.com/PotatoMaster101/mvvm_test$ cd mvvm_test$ dotnet build -c Release

    WPF mvvm框架Stylet使用教程-窗体交互用法

    **WPF MVVM框架Stylet使用教程 - 窗体交互用法** Windows Presentation Foundation (WPF) 是Microsoft提供的一种用于构建桌面应用程序的框架,它引入了Model-View-ViewModel (MVVM) 设计模式,使得UI设计和业务逻辑...

    MVVM模式开发电子书视频教程

    MVVM模式开发电子书 视频教程资源目录:【】215063bb8280440ff37b9d002bbc4726【】Advanced.MVVM【】Apress.Pro.WPF.and.Silverlight.MVVM.Dec.2010【】Developer’sGuidetoMicrosoftPrism4【】MVVM入门与提高_...

    MVVM-Samples:MVVM软件包的示例回购

    MVVM工具包简介 Microsoft.Toolkit.Mvvm软件包是一个现代,快速且模块化的MVVM库。 它是基于以下原则构建的: 平台和运行时无关-.NET Standard 2.x :rocket: (与UI框架无关) 易于上手和使用-对应用程序结构或...

    MVVM_template:MVVM模板

    总的来说,MVVM模式通过解耦视图和模型,使得开发者能独立地工作,提高代码的可维护性和可测试性。"MVVM_template"提供的模板,旨在简化MVVM模式的起步过程,让开发者更专注于业务功能的实现,而非基础设施的搭建。...

    android-mvvm-architecture:此存储库包含一个详细的示例应用程序,该应用程序使用Dagger2,Room,RxJava2,FastAndroidNetworking和PlaceholderView实现MVVM体系结构

    Android MVVM体系结构:示例应用更新:该存储库包含一个详细的示例应用程序,该应用程序使用Dagger2,Room,RxJava,FastAndroidNetworking,PlaceHolderView和AndroidDebugDatabase实现MVVM体系结构该应用程序具有...

Global site tag (gtag.js) - Google Analytics