RelayCommandT
RelayCommand<T>
类似于 RelayCommand
,但允许直接将对象传递给命令。它实现了 ICommand
接口,因此可用于绑定到 XAML 中的 Command
s(例如,作为 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();
强制重新评估canExecute
Func