今天心血来潮,想搞搞 WPF,毕竟也是微软家的东西,之前稍微看过一点点,但不系统。这回就从头开始,好好捋一捋。
搞起环境
我这电脑是 Win10 的,装 VS2019,这玩意儿装的时候就得选 WPF 相关的组件,不然还得后面再补,挺麻烦。反正我这环境是早就有。
打开 VS,点“创建新项目”,找到“WPF 应用程序(.NET Framework)”,选 C# 语言,起个名字,选个地儿,点“创建”就完事儿。VS 这东西,用起来是真方便,啥都给你准备好。
认识一下 WPF 这玩意儿
WPF,全名叫 Windows Presentation Foundation,翻译过来就是“Windows 呈现基础”。听这名字就觉得挺厉害,微软搞出来专门做 Windows 桌面应用的。以前还用 WinForm,现在都流行 WPF ,界面更炫酷,还能用 XAML 来画界面,有点像写网页似的。
先跑个 Hello World 看看
项目创建好之后,VS 自动生成一堆文件,主要关注 * 和 * 这俩。* 就是用来画界面的,* 是写代码逻辑的,跟网页的 HTML 和 JavaScript 差不多意思。
打开 *,VS 有个设计器,可以拖控件,也可以直接写 XAML 代码。我先拖个 TextBlock 控件进去,改改里面的文字,改成“Hello, WPF!”。然后直接点“启动”,就跑起来,一个窗口,上面显示着“Hello, WPF!”,最简单的程序就完成。
试试 MVVM 这东西
现在都流行 MVVM,WPF 也支持。MVVM 啥意思?就是 Model-View-ViewModel,把界面(View)、数据(Model)和中间的逻辑(ViewModel)分开,这样代码更清晰,也好维护。以前写 WinForm,代码都揉一块儿,乱糟糟的。
我新建几个文件夹,分别叫 Models、Views、ViewModels,把 * 挪到 Views 文件夹里,又在 ViewModels 文件夹里建个 *。在 * 里,我写个属性,叫 Greeting,类型是 string,值是“Hello, WPF!”。
然后,我回到 *,把 TextBlock 的 Text 属性绑定到 MainWindowViewModel 的 Greeting 属性上。这绑定咋写?用大括号{},里面写 Binding Greeting。这样,TextBlock 就能显示 Greeting 属性的值。
我在 * 里,把 MainWindowViewModel 设置成 MainWindow 的 DataContext。DataContext 这东西,就是用来给界面提供数据的。这样,界面和数据就关联起来。
再跑起来,效果跟之前一样,但代码结构更清晰。以后要改界面,就改 XAML;要改逻辑,就改 ViewModel;数据变,界面也自动更新,这就是 MVVM 的好处。
总结一下
今天折腾 WPF 的基本用法,创建项目、跑程序、用 MVVM,感觉还挺有意思。WPF 这东西,功能挺强大,界面也好看,以后做 Windows 桌面应用就靠它。不过WPF 东西也挺多,还得继续学习,慢慢摸索。
- 下一步计划:
- 学习更多 WPF 控件的用法。
- 研究一下 WPF 的样式和模板。
- 尝试做个稍微复杂点的应用。
今天就先到这儿,以后有啥新的实践,再来分享。