计划慢慢整理自己在WPF学习和工作应用中的一些心得和想法,先从一个简单的用法说起
在WPF中,XAML标记语言中绑定数据,而数据源就是指定为ViewModel类,而非界面本身的逻辑代码类
这样一定程度上达到界面与业务逻辑分离的思想,UI层只需要对ViewModel类进行依赖,只要ViewModel公开出来的属性不变,界面层就不用根据业务逻辑变化而进行修改
这大概就是MVVM模式的一个基本出发点,配合WPF的依赖属性和命令等结合使用,会有更复杂的用法及更好的效果
这里先从一个简单的数据绑定用法为例:界面一个输入框与业务模型中某个属性值绑定,实现加载界面时显示内存中该属性的值,同时通过界面修改可以直接修改内存中该属性的值
View层即UI层,由XAML标记语言类和界面业务类组成,XAML类中对文本框TextBox的内容进行绑定,指定数据源
Text="{Binding Path=MyName,Mode=TwoWay}"
MyName即ViewModel类中的业务属性,在UI的逻辑代码类中,讲VM类绑定到UI层
MyViewModel viewModel= new MyViewModel(); this.DataContext=viewModel;
根据WPF绑定数据的原理,XAML类中,为Text赋值时自动寻找匹配Path的属性内容,显然会找到viewModel对象的MyName属性,绑定方式为TwoWay即界面修改后也会同步内存属性的值
例子比较简单,是最基本的MVVM模式绑定数据,之后复杂的用法都是建立在这个简单例子之上
PS:ViewModel层不能是Model层的简单封装,ViewModel层也不能是View层的简单映射。ViewModel层和View层要绝对分离,ViewModel层要和View层一样去面向需求设计。