【WPF】Command 自定义命令

【WPF】Command 自定义命令,第1张

在使用 MVVM 结构的 WPF 程序中,ViewModel 对 View 的响应是通过 Command (命令)来完成的。比如用户点了某个按键,使得与该按键相绑定的命令被触发,而该命令又是在 ViewModel 中被定义的,于是就完成了一次 View 对 ViewModel 的调用。

WPF 和 C# 语言的高级用法,比如委托、反射、事件等等,是紧密联系的,所以学习 WPF 时需要有一定的 C# 基础。

虽然官方提供了一些常用命令,但本文还是着重于自定义命令的用法。

命令有两大要素:做什么、能做吗。自定义命令首先要继承自 ICommand :

如上所示, ICommand 的后代有三个东西必须要实现,而最后两个 ExecuteAction 和 CanExecuteAction 是比较推荐的写法。

在本例中, Execute() 方法是 ICommand 认定的用来执行命令的方法, ExecuteAction 是对该方法的一项委托,于是外部使用者(ViewModel)只需设置这份委托,而不需染指 Execute() 方法。

接下来把这个命令类放在 ViewModel 中使用:

ViewModel 中定义了两个函数,分别对应命令的“做什么”、“能做吗”,并通过委托的方式告诉命令。

剩下的就是 View 中的内容了:

在 View 的 xaml 文件中,首先把 ViewModel 当作它的 DataContext (毕竟 ViewModel 其实就是 View 的 Model)。然后直接在按钮上用 Binding 的方式绑定命令。于是当用户点击按钮时,这个命令就会被触发。

命令被触发时,它会先调用自己的 CanExecute() 方法,这个方法在第一步中调用 CanExecuteAction 这个委托,这份委托又在第二步中绑定了 CanDoSomething() 方法……经过一番长途跋涉之后终于调用了 DoSomething() 方法

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11768187.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存