RelayCommandT
RelayCommand<T> 类似于 RelayCommand,但允许直接将对象传递给命令。它实现了 ICommand 接口,因此可用于绑定到 XAML 中的 Commands(例如,作为 Button 元素的 Command 属性)。然后,你可以使用 CommandParameter 属性将对象传递给命令。
XAML 示例:
<Button Command="{Binding MyCommand}" CommandParameter="{Binding MyModel}" />
构造函数有两个参数; 第一个是在调用 ICommand.Execute 时执行的 Action(例如用户点击按钮),第二个是 Func <string,bool>,它确定是否可以执行操作(默认为 true,调用 canExecute 在以下段落中)。基本结构如下:
public RelayCommand<string> MyCommand => new RelayCommand<string>(
obj =>
{
//execute action
Message = obj;
},
obj =>
{
//return true if button should be enabled or not
return obj != "allowed";
}
);
一些值得注意的影响:
- 如果
canExecute返回false,将禁用该用户的Button - 在真正执行操作之前,将再次检查
canExecute - 你可以致电
MyCommand.RaiseCanExecuteChanged();强制重新评估canExecuteFunc