精华内容
参与话题
问答
  • MVVM是Model-View-ViewModel的简写。类似于目前比较流行的MVC、MVP设计模式,主要目的是为了分离视图(View)和模型(Model)的耦合。 它是一种极度优秀的设计模式,但并非框架级别的东西,由MVP(Model-View-...

    MVVM是Model-View-ViewModel的简写。类似于目前比较流行的MVC、MVP设计模式,主要目的是为了分离视图(View)和模型(Model)的耦合。

    它是一种极度优秀的设计模式,但并非框架级别的东西,由MVP(Model-View-Presenter)模式与WPF结合的应用方式时发展演变过来的一种新型架构。

     1、安装

    参考:https://www.cnblogs.com/wzh2010/p/6285954.html

    主要使用方式有两种;

    一种是去官网上下载MVVMLight Toolkit,安装之后,VS模板中会出现MvvmLight项目模板,你可以直接使用该项目模板来创建项目了。里面会包含默认的ViewModelLocator和MainViewModel,MainViewModel就是你Main视图的ViewModel了,而ViewModelLocator是一个全局的ViewModel加载注册器。

    安装方式参考:https://www.cnblogs.com/HelloMyWorld/archive/2013/03/07/2947942.html

    另一种方式就是去NuGet上安装,这无疑是最便捷的事了。在NuGet 工具箱上搜索 MVVM Light,可以看到两个项目,一个是MVVM Light , 一个是 MVVM Light libraries only。

    Nuget上这两个项目的区别就是MVVM Light除了必要的GalaSoft 组件之外,还会额外添加相关分层文件目录形成简单的MVVMLight成型框架。它会帮你生成ViewModel文件夹,里面包含MainViewModel和ViewModelLocator文件。

    这种方式还有一个好处,你总是可以得到最新的版本,因为nuget package是自动有更新提示的。而如果你是用Toolkit的话,则得不到更新的提示。

    使用NuGet查找和安装MVVM Light

    要在NuGet中查找MVVM Light,请按照以下步骤操作:

    • 在Visual Studio中打开您的项目。
    • 右键单击References文件夹,然后从上下文菜单中选择“Manage Nuget Packages ...”。(管理Nuget包)
    • 在“管理Nuget包”对话框中,选择所有。
    • 在搜索字段中,输入“mvvmlight”。
    • 选择MVVM Light包并按下Install按钮。

    完成这些步骤后,对您的项目进行了以下更改:

    添加了“packages”文件夹以及以下库。请注意,此文件夹将添加到项目结构的根目录中,而不会显示在“解决方案资源管理器”中。添加了另外两个类的ViewModel文件夹:

    ViewModelLocator.cs   //做为全局资源,用来联系View相对应的viewmodel

    <Application x:Class="MvvmLightDemo.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:MvvmLightDemo" StartupUri="MainWindow.xaml"
                xmlns:d="http://schemas.microsoft.com/expression/blend/2008" d1p1:Ignorable="d"
                xmlns:d1p1="http://schemas.openxmlformats.org/markup-compatibility/2006">
      <Application.Resources>
        <ResourceDictionary>
          <vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" xmlns:vm="clr-namespace:MvvmLightDemo.ViewModel" />
        </ResourceDictionary>
      </Application.Resources>
    </Application>
     

     MainViewModel.cs    //自动为主窗口生成的viewmodel,可以删除,然后自定义。

    通过添加ViewModelLocator作为全局资源来修改App.xaml文件。(已经自动添加,需要重新编译一下)

    所以每次App初始化的时候,就会去初始化ViewModelLocator类。

    实际上他就是一个很基本的视图模型注入器。在构造器中把使用到的ViewModel统一注册,并生成单一实例。

    然后使用属性把它暴露出来,每当我们访问属性的时候,就会返回相应的ViewModel实例。

     

    2、使用

    参考:https://www.cnblogs.com/manupstairs/p/4909585.html 这里是一个简单的例子。

    1、直接在项目上增加的话,可能会因为缺少引用报错,需要手动增加一些USING,

    2、如果有新的界面与新的viewmodel,则需要在ViewModelLocator中注册我们写好的ViewModel。

    a) 在的构造函数中增加  SimpleIoc.Default.Register<自定义的ViewModel>();

    b) 在类中实例化:    public MainViewModel 自定义的实例{  get  {return ServiceLocator.Current.GetInstance<自定义的ViewModel>();       }   }

    3、Model中,对应的字段属性需要有通知事件,在对应的ViewModel定义的集合或者字段也需要有通知事件。

    4、界面与后台的绑定,

    前台:在<Window>标签中增加  DataContext="{Binding Source={StaticResource Locator},Path=注册的自定义实例}"

    后台:在对应的.cs的构造函数中增加  this.DataContext = new 自定义的ViewModel();

     5、引用报错的问题

    安装完成后,在使用过程中,可能会遇到问题报错,查询资料显示可能是由于MvvmLight没有及时更新,如果将图中的CommonServiceLocator升级到最新的2.x版本之后,它所依赖的ServiceLication的名称空间变为了CommonServiceLocator,导致安装MvvmLight之后自动生成的代码就出现了错误,如果你使用了最新版本,那么就需要手动修改一下这个名称空间,或者删除这个命令空间~

     6、Set方法来给属性赋值报错。

    Set方法可能报错,这里有三个方法:

    1、将  set { Set(ref title , value); } 改成 set {Set("Title",ref title, value)};

    2、将  set { Set(ref title , value); } 改成 set { title = value; RaisePropertyChanged(()=>Title); };

    3、将  set { Set(ref title , value); } 改成 set { title = value; RaisePropertyChanged(“Title”); };

     

    3、绑定

    参考地址:https://blog.csdn.net/colingg/article/details/85624751 主要是ViewModelLocator文件介绍。

    参考地址:https://www.cnblogs.com/wzh2010/p/6286923.html 主要是View文件中的绑定。

    参考地址:https://www.cnblogs.com/scy251147/p/3791954.html 主要是绑定命令的深入理解。

    参考地址:https://www.cnblogs.com/wzh2010/p/6425060.html  主要是绑定命令的应用理解。

     

     

    4、其它参考资料

    MvvmLight ToolKit 教程https://www.cnblogs.com/HelloMyWorld/p/4750070.html

    MVVM、MVVMLight、MVVMLight Toolkit之我见https://www.cnblogs.com/chenxizhang/archive/2011/10/01/2197786.html

     

     

     

     

     

     

     

     

    展开全文
  • 一、入门教程 1、... 不全是MVVM模式,但是楼主自己做了一个软件给自己使用,值得学习。软件界面以及在代码在连接里面有 ...提供了MvvmLight框架使用入门(一)到(四)入门教程 3、http...

    一、入门教程

    1、http://www.cnblogs.com/shanlin/p/3954531.html

    不全是MVVM模式,但是楼主自己做了一个软件给自己使用,值得学习。软件界面以及在代码在连接里面有

    2、https://www.cnblogs.com/manupstairs/p/4890300.html

    提供了MvvmLight框架使用入门(一)到(四)入门教程

    3、https://www.cnblogs.com/3xiaolonglong/p/10001787.html共七篇文章

    4、https://www.cnblogs.com/lovecsharp094/p/5837668.html

     

    6、https://github.com/lbugnion/mvvmlight

    来自MVVMLight的创作者lbugnion(全名叫Laurent Bugnion)

     二、WPF使用MVVMLitht的教程

    参考:

    1、MvvmLight (.net wpf)在项目中的应用  https://www.cnblogs.com/coder-fang/p/8692602.html

    2、https://blog.csdn.net/mybelief321/article/details/44423845

    3、http://www.cnblogs.com/Mushrooms/p/3794849.html

    4、https://blog.csdn.net/yl2isoft/article/details/20838149

    5、这篇博客给出了一个刷单软件的雏形(不是用MVVMLight,而是用Caliburn.Micro框架)https://www.cnblogs.com/xcj26/p/5462972.html

     

    展开全文
  • 原文:利刃 MVVMLight 1:MVVMLight介绍以及在项目中的使用一、MVVM 和 MVVMLight介绍MVVM是Model-View-ViewModel的简写。类似于目前比较流行的MVC、MVP设计模式,主要目的是为了分离视图(View)和模型(Model)的...
    原文:利刃 MVVMLight 1:MVVMLight介绍以及在项目中的使用
    一、MVVM 和 MVVMLight介绍
    MVVM是Model-View-ViewModel的简写。类似于目前比较流行的MVC、MVP设计模式,主要目的是为了分离视图(View)和模型(Model)的耦合。
    它是一种极度优秀的设计模式,但并非框架级别的东西,由MVP(Model-View-Presenter)模式与WPF结合的应用方式时发展演变过来的一种新型架构。
    立足于原有MVP框架并且把WPF的新特性糅合进去,以应对PC端开发日益复杂的需求变化。
     
    结构如图所示:
     
    相对于之前把逻辑结构写在Code Behind 里面的方式,MVVM几乎完全解耦了视图和逻辑业务的关系,通过数据绑定和命令来处理UI属性
    及事件驱动。同理,ViewModel的视图交互业务逻辑处理导致的属性变更也会通知到View前端,让View前端实时更新。Model中存放数据模型和数据逻辑、业务逻辑。
    其实我个人认为,数据和业务交互这一层还是应该另外独立,Model中完全就是实体模型,这样更清晰。
     
    这种类型的双向绑定非常优秀,View的变动,会自动反应到ViewModel上,反之亦然。目前JS前端框架AngularJS也是采用这种设计模式。
     
    MVVM模式和MVC模式一样,主要目的是分离视图(View)和模型(Model),有几大优点
    1. 低耦合:视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的View上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。
    2. 可重用性:可以把一些视图逻辑放在一个ViewModel里面,让很多View重用这段视图逻辑。
    3. 独立开发:开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计,使用Expression Blend可以很容易设计界面并生成xml代码。
    4. 可测试:界面素来是比较难于测试的,而现在测试可以针对ViewModel来写。
     
    希望对MVVM有更进一步了解的同学可以看看这篇文章:https://www.codeproject.com/kb/wpf/wpfmvvmquickstart.aspx
    作者从MVVM的模式介绍到数据绑定、消息通知、命令等几个主要方面都有详细的说明。
     
    如果你目前正在进行微软的 WPF 、Windows Phone、Windows 8、SilverLight相关项目的开发,我先很有必要了解一下MVVM Light框架。
    它轻量(相对于Prism),专注(仅负责MVVM架构模式的实现,没有其他多余的组件),高效(使用简易,省时减力),能够帮助你更好的开发你的应用。
     
    MVVMLight的作者Laurent Bugnion 是个微软MVP,这个是MVVMLight的官网:http://www.mvvmlight.net/,上面有详细的介绍和视频文档,
    同时作者还将代码开源到Codeplex上面:http://mvvmlight.codeplex.com/,有兴趣的同学可以下载来了解下。
     
    有趣的是,MVVMLight的产品Logo是一根羽毛,寓意了我们上面提到的优点:轻量、专业、高效,不知道作者是不是这个意思。
     
     
     
    二、如何在你的WPF应用中使用MVMLight
    主要使用方式有两种;
    一种是去官网上下载MVVMLight Toolkit,安装之后,VS模板中会出现MvvmLight项目模板,你可以直接使用该项目模板来创建项目了。
    里面会包含默认的ViewModelLocator和MainViewModel,MainViewModel就是你Main视图的ViewModel了,而ViewModelLocator是一个全局的ViewModel加载注册器,这个第二篇会详细说到。
     
    另一种方式就是去NuGet上安装,这无疑是最便捷的事了。在NuGet 工具箱上搜索 MVVM Light,可以看到两个项目,一个是MVVM Light , 一个是 MVVM Light libraries only。
    当前版本是5.3,说明MVVM Light的更新速度还是挺快的,Prerelease中还有 V5.4 的 ALAPHA 版本。
     
    Nuget上这两个项目的区别就是MVVM Light除了必要的GalaSoft 组件之外,还会额外添加相关分层文件目录形成简单的MVVMLight成型框架。
     
    如图它会帮你生成ViewModel文件夹,里面包含MainViewModel和ViewModelLocator文件。
    至此,一个基于MVVMLight的WPF项目框架基本搭建完成了,下面一篇我们详细说下框架的结构。
    展开全文
  • MVVMLight使用(一)

    千次阅读 2016-05-20 16:00:34
    MVVM是Model-View-ViewModel的简写。它是在MVP框架的基础上结合WPF的特性演变出来的一种新型架构框架。...本人现在主要做UWP方面的项目,选择了MVVMLight框架,下面先介绍一下MVVMLight框架添加到UWP项目中

           MVVM是Model-View-ViewModel的简写。它是在MVP框架的基础上结合WPF的特性演变出来的一种新型架构框架。从MVVM这个名字就可以看出,该框架的目的主要是为了将页面和逻辑处理分离开始,适合团队协助时使用。


    目前,网上有很多MVVM的开源框架,大多都不错。本人现在主要做UWP方面的项目,选择了MVVMLight框架,下面先介绍一下MVVMLight框架添加到UWP项目中。

    新建项目



    添加MVVMLight框架

        点击《项目》—>《管理NuGet程序包》,选择浏览,输入MVVM,搜索结果如下图

    刚开始就是MVVMLight框架。这里要说明的一点是目前MVVMLight对于UWP的项目支持并不完整,因此并不会添加一些资源,需要自己手动添加。既然这样,我们就只添加动态库就可以了。因此,我们选择MvvmLightLibs进行安装。安装成功后可在引用中看到MvvmLightLibs。


    添加资源

            上文说到MvvmLight到UWP项目的支持不是太好,一些资源需要手动添加。在项目中添加View和ViewModel两个文件夹。后续的界面会放到View中,逻辑处理放到ViewModel中。


            在ViewModel中添加ViewModelLocator.cs文件,该文件本来应该添加框架后自动生成的,现在需要我们手动添加。该文件可通过这个地址下载。
            在APP.x中添加如下代码
    <Application.Resources>
         <model:ViewModelLocator x:Key="Locator"></model:ViewModelLocator>
    </Application.Resources>

            文章写到这里我们在项目中就成功的添加了MVVMLight框架了。

    展开全文
  • MVVMLight框架使用实例

    2014-09-29 15:44:00
    使用了mvvvmlight的实例,涉及到数据绑定,消息,命令的小例子,帮助你更好理解mvvmlight框架
  • 转自:https://www.cnblogs.com/chenxizhang/archive/2011/10/01/2197786.html我想,现在已经有不少朋友在项目中使用了MVVMLight了吧,如果你正在做WPF,Silverlight,Windows Phone的开发,那么,你有十分必要的...
  • MvvmLight MvvmLight【帮你建一个MainPage的ViewModel,并创建好Binding】 MvvmLightLibs【纯类库】 使用参考: 利刃 MVVMLight Prism 比较重,微软团队开发企业级框架 使用参考:Prism框架在项目中使用...
  • 测试实例MVVMLightDemo全面使用实例,MVVMLight使用标准参考官方文档
  • MvvmLight 5.4.1 报错:“命名空间‘Practice’不存在”解决方法问题的发现 问题的发现 今天看了一个关于MvvmLight的文章,逐自建一个Demo尝试,在Nuget安装MvvmLight以后发现ViewModelLocator里面直接报错了,...
  • MvvmLight是比较流行的MVVM框架,相对较为简单易用。可能正因为简单,对应的帮助文档不多,对初学者就不够友好了。这里会用几篇随笔,就个人对MvvmLight的使用经验,来做一个入门的介绍。  第一步我们先找到并下载...
  • 使用NuGet即可下载到最新免费的MVVMLight,安装之后,会有以下几个DLL被项目引用: 其中还依赖了一个微软的DLL——Microsoft.Practices.ServiceLocation.dll。 - 在使用过程中,**可能遇到的问题:**就是可能是...
  • MvvmLight框架使用入门(一)

    千次阅读 2016-03-04 16:04:38
    MvvmLight是比较流行的MVVM框架,相对较为简单易用。可能正因为简单,对应的帮助文档不多,对初学者就不够友好了。这里会用几篇随笔,就个人对MvvmLight的使用经验,来做一个入门的介绍。   第一步我们先找到并...
  • MVVMLight的使用方法

    千次阅读 2015-08-26 23:11:49
    MVVMLight的使用方法  ViewModel 类中我们可以做许多的事情,可以给页面绑定的某个字段初始值,也可以初始绑定的事件等操作。如下所示: public class 要用的ViewModel: ViewModelBase  {  ...
  • 我想,现在已经有不少朋友在项目中使用了MVVMLight了吧,如果你正在做WPF,Silverlight,Windows Phone的开发,那么,你有十分必要的理由了解MVVM和MVVMLight。我写这篇文章的目的,是给大家做一个总结,以便更多的...
  • 深入介绍 MVVM Light Messenger

    千次阅读 2015-07-14 17:17:57
    此系列介绍了 Model-View-ViewModel (MVVM) 模式和 MVVM Light Toolkit。 Messenger 组件实际上是 MVVM Light Toolkit 的一个功能相当强大的元素,它由于简单易用而受到开发人员的青睐,但也由于误用会带来风险...
  • Mvvm Light Toolkit 入门

    千次阅读 2017-07-03 19:46:50
    之前学习UWP的时候就一直看到有关MVVM的资料但是一直没有系统的去学,最近正好有时间,特地来攻破这个点。
  • 使用 MVVMLight 绑定数据

    千次阅读 2014-07-14 10:42:57
    如果你还不知道如何在VS中加入MVVMLight的引用,那么建议你先翻阅这篇文章:在VS中安装/使用 MVVMLight这篇文章主要是介绍如何使用MVVMLight来绑定数据到界面中(View),以此来了解MVVMLight的一些基础的类的用法。...
  • 使用 MVVMLight 命令绑定

    千次阅读 2014-07-14 10:41:32
    首先,如果您希望了解更多的MVVMLight技术或希望有顺序的学习MVVMLight,请查阅目录《MVVMLight 设计模式系列使用文章》。继上一篇文章的项目,我们实现了数据绑定到界面中。这篇文章我们将实现把命令绑定到按钮上,...
  • listview+listbox MVVMLight下动态添加控件
  • Mvvm Light Toolkit 入门

    2018-06-06 11:29:00
    原文:Mvvm Light Toolkit 入门 前言 之前学习UWP的时候就一直看到有关MVVM的资料但是一直没有系统的去学,最近正好有时间,特地来攻破这个点,顺便学习一下VS与GitHub的链接和MarkDown的语法。 下面的附件...

空空如也

1 2 3 4 5 ... 20
收藏数 3,053
精华内容 1,221
关键字:

mvvmlight