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() 方法
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)