假如你对 C#已经有了比较好的了解,那么学习 WPF 不会太难。我学习 WPF 已经有
一段时间了,但一直没有找到比较好的 MVVM 教程。希望这篇文章能达到这个目的。
在学习任何技术之前,你都会想知道“学了有什么好处”。在我看来,我看到的几乎所有
的 WPF 教程都会有以下的一个或多个不足:
1. 示例都是用 XAML 表示。
2. 示例掩盖了那些可以让你使用起来更加方便的主要功能。
3. 示例试图通过一些根本没什么用的知识点来炫耀 WPF/XAML 的技巧。
4. xxx
所以,为了处理这些问题,我写了这篇文章,基于那篇在 Google 里输入“WPF
Tutorial”而得到的第一篇文章。这篇文章也许不是 100%正确,或者不是“唯一解”,但
它将讲明我在 6 个月前得到的体会的主要思想。
我会先快速地介绍一些主题,然后通过一个示例来解释或证明每一个要点。因此,我
不想试图让 GUI 很漂亮,那不是本文的重点。
Note:由于这篇教程特别的长,为了简洁,我省略了很多代码,所以,为了更好的理解
这文章,请下载 zip 代码包。运行环境(.net 4.0 / vs 2010)。
基本要点:
1. WPF 中,最重要的就是数据绑定(data binding)。通常,你有一些数据集合,
你想要显示给用户,你就可以将数据绑定到 XAML
2. WPF 有两部分,XAML 部分是描述你的 GUI 和特效,code-behind 部分的.cs 代
码用来联系 XAML
3. 最优雅同时也可能是最大限度地复用你的代码的方式就是使用‘MVVM’模式:
Model, View, ViewModel。这个的目标就是确保你的 View 中 cs 代码最小化,
应该都以 XAML 的形式来显示。
你要知道的主要知识点:
1. 用来存储你的数据的集合是 ObservableCollection<>.而不是 list,也不是
dictionary,但可以是 ObservableCollection 。单词“Observable(可观察
的)”就是这里的主线:WPF 窗口要有‘观察’你数据集合的能力。集合类要实现一些
WPF 要使用的必要接口。
2. 每一个 WPF 控件都有一个 DataContext 以及集合控件拥有一个
ItemsSource 属性。
3. INotifyPropertyChanged 接口将会在 GUI 与你的代码要传输数据时,大
量的使用。