您的位置:首页 > 其它

在UWP中实现自己的MVVM设计模式

2015-09-15 09:06 197 查看
其实写这篇博文的时候我是拒绝的,因为这牵扯到一个高大上的东西——"框架"。一说起这个东西,很多朋友就感觉有点蒙了,尤其是编程新手。因为它不像在代码里面定义一个变量那么显而易见,它是需要在你的整个程序架构上体现出来的,并且对于框架来说,并没有什么固定的代码格式,你可以这样写,当然也可以那样写。只要最终可以达到同样的效果,各个模块之间能够体现这种框架的思想就OK。所以当你都是用MVVM框得到两份架写的相同需求的Demo看时,发现里面的很多代码都不一样,请不要惊讶,因为你正在接触一个很抽象的东西,这种东西有的时候还真得你需要自己挖空心思去琢磨一下,光靠别人给你讲还是不行的!

--------------------------------切入正题--------------------------------

在进行搭建自己的MVVM框架的时候你需要提起掌握一下知识(至少要熟悉,如果未达标,建议先自行脑补一下,我可能不会做到面面俱到):

1、熟练掌握数据绑定;

2、熟练使用委托;

3、对MVVM框架有一定的了解;

--------------------------------在你决定继续要往下看的时候我会默认你已经对上述知识有所了解------------------------------

一:为页面绑定数据

按照规范的MVVM框架来说,一个项目中至少要有要有三个文件夹:View、ViewModel、Model;这三个文件夹分别对应该框架的三个组成部分,这一点没什么好说的。针对Model中的一些属性而言,如果想具有属性通知的功能的话就需要继承INotifyPropertyChanged接口,并需要自定义一个函数用于触发对应的PropertyChanged事件,一般情况下我们都会把这一部分封装到一个类中,供其它类来继承它。这样就避免出现代码冗余的问题。示例代码如下所示:

1
private DelegateCommand _showDialog;

2
public DelegateCommand ShowDialog

3
{

4
get

5
{

6
return _showDialog ?? (_showDialog= new DelegateCommand(

7
async (Object obj) =>

8
{

9
await
new Windows.UI.Popups.MessageDialog(obj.ToString()).ShowAsync();

10
},

11                     (Object obj) => true));

12
}

13         }


View Code
写到这,我们的MVVM框架已经搭建的差不多了,还算满意,我运行的效果是这样的(你的也是这样的吗?):



我不知道我用我的这种方式理解和设计应用程序的MVVM框架在诸位眼中是否规范,合法,还请高手不吝赐教呀:)!!!!

四:写在最后

如果你能够熟练理解并能够将MVVM运用到自己的项目中,并计划使用第三方MVVM框架的话,我建议你使用MVVMLight,简单易用上手快,并且它已经支持UWP的项目模板了。我真的很佩服作者(官网地址)的编码能力,我的很多思路都是从他的博客中获得灵感的,希望你也是如此!

GitHub :https://github.com/hippieZhou/MVVM
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: