理解MVVM在WPF中的绑定关系
最近想使用WPF做一个自动化程序的雏形,但在第一步理解MVVM模型中就出了差错,后面翻看了各类博客也是似懂非懂,但终于功夫不负有心人,理解能力低下的LZ也大概初步了解了WPF应用中MVVM模型的使用。
MVVM模型在WPF中的使用
由于缺乏工程经验,是多文件工程的苦手,所以一开始不清楚MVVM模型多个文件的具体用途,塞了一脑子浆糊。只知道空泛的Model,ViewModel,View之间的关系,不知道具体各个文件应该存放什么内容,但后面琢磨了一下,主要的框架应该是这样的:
-
Folder
Model
——Model_0.cs
—— ClassThing
——Thing.A; Thing.B;
-
Folder
ViewModel
——ViewModel_0.cs
—— ObjectThing (Named "th")
——th.A; th.B;
-
Folder
View
——View_0.xaml
+View_0.xaml.cs
——UI_element.Content
大概是这么一个工程框架,值得一提的是xaml文件和xaml.cs文件其实是一体的,ui本就是C#编译生成的,所以虽然语法不同,但内容是互通的,不需要写重复代码。
那么我们一个个来看:
- 最外层的都是文件夹,整合工程方便管理项目
- 然后是对应每个MVVM模型的Model、ViewModel、View文件,这里编了个号为0
- 下面是每个文件的内容及作用
Model
- Model中声明一个名为Thing的类,它有A和B两个属性
- 它的作用就是定义和声明类对象
ViewModel
- ViewModel中新建这个名为Thing的类的一个对象,这里叫th,th作为Thing也有自己的A和B属性
- ViewModel还需要写构造函数,目的是为了实例化th对象,为th的A和B属性赋值
- 现在我们有th.A和th.B的值了,只需要绑定到相应的空间元素上就可以了
- VM的功能就是把杂七杂八的逻辑都放在其中,比如获取值,数据处理得到新的值
View
- DataContext相当于是xaml的命名空间,告诉控件去哪里能找到你想要的th对象
- 既可以在xaml.cs文件中写
this.DataContext = new ViewModel_0();
,也可以在xmal文件<Windwo.DataContext/>中修改 - th.A和UI_Element要绑定在一起还要一座桥,这座桥就是Binding对象
- 最终得到的结果就是ViewModel_0对象把它内部的th.A和th.B交付给了ui元素,然后显示出来