最近因为某个有趣的原因还是来做C#了......好吧主要是对Qt有种不爽,因此WPF大法好。WPF给我印象很深的部分就是数据绑定,而我很久也没做界面了,故借机预习一波MVVM。
MVVM模型,是有着视图(View):
视图后面有着视图模型(View-Model),数据绑定到上面:
WPF用xxx="{Binding NAME}",就能绑定好。模型(Model)是与数据逻辑相关而与ViewModel交互的部分。这样,Model和View就彻底分开了:
MVVM,便是Model、View、ViewModel。有什么好处网络上太多了,WHY MVVM这类问题网上也太多了,在此就不做无用功。总结一下:
- View是用户看到的,自然希望漂亮就好,不花里胡哨。
- ViewModel是隔离Model和View的,即,我可以把ViewModel拆掉,Model能正常运行,可以去测试它(当然把View拆了基本就是一个空白界面了)。
- Model是我们的业务逻辑,也就是说,和GUI没关系的东西我们希望放到这里,和GUI有关系的全部扔到ViewModel去。
在代码上:
- 对于View,我们在WPF的xaml(假设下面这个是Window.xaml)里面放上数据绑定,例如这个ListBox:
只需要绑定需要的部分,换句话说,不用管不需要的数据。
- 对于ViewModel,自然第一会想到Window.xaml.cs这个里面,这固然没问题。不过我们可以单独搞个cs文件,把ViewModel分开:
我们应该把所有和GUI有关的问题都放在这解决。
- 最后是Model,这部分就不贴代码了。我们希望Model能拆开单独跑,所以可以在ViewModel里面new Model,Model提供对应的操作方法,ViewModel去调用这些方法来实现。
</MVVM>