我是靠谱客的博主 粗心水池,最近开发中收集的这篇文章主要介绍MVVMLight,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.写一个Model

 

ObservableObject,这个父类的作用就是保证能够检测属性是否被改变。

它实现了INotifyPropertyChanged接口,通过触发PropertyChanged事件达到通知UI更改的目的;所以我们在定义实体对象的时候,只需要调用RaisePropertyChanged(PropertyName)就可以进行属性更改通知了。所以实体里面定义的每个属性都加上RaisePropertyChanged(PropertyName)的调用,就可以实现对UI的交互更新了。

 

2.写一个ViewModel,来负责跟View的交互

 

包含了一个命名为Student的StudentModel属性,继承了ViewModelBase父类,

ViewModelBase同时继承 ObservableObject类和ICleanup接口。所以他同样有INotifyPropertyChanged接口的能力,

能够通过触发PropertyChanged事件达到通知View的目的;

构造函数中对 Student属性进行了实例化。

3.写一个View,来显示和交互ViewModel


 Label绑定了 StudentModel.Id和StudentModel.Name,所以应该显示StudentModel对象下的Id和Name属性。

这时候的ViewModel和View是没有任何关系的,所以我们在code-Behind的构造函数中写上如下代码:

 

把 StudentViewModel 赋值给当前视图的数据上下文。所以可以在当前视图中使用ViewModel中所有的公开属性和命令。

 

4.构造器:

如果使用NuGet安装的是完整的一个是MVVM Light 框架,总是会带上ViewModelLocator类,并且生成资源字典并加入到了全局资源中。

 

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

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

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

 

 

 

注册完WelcomeViewModel实例之后,我们就可以在相应的View中使用了 ,原本的

 

中的 this.DataContext = newStudentViewModel(); 可以去掉了,直接在StudentView中这样写:

DataContext="{Binding Source={StaticResource Locator},Path=Student}",如下图:

 

这样做的好处,一个是绑定化相对于简单粗暴的赋值方式,更合理。一个是在可视化窗口可以看到所绑定的数据,达到所见即所得的友好效果。当我们改掉绑定到的数据,编译之后就会立马呈现。

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

最后

以上就是粗心水池为你收集整理的MVVMLight的全部内容,希望文章能够帮你解决MVVMLight所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(68)

评论列表共有 0 条评论

立即
投稿
返回
顶部