我创建了类似于默认RelayCommand实现的东西。它接受:
public RelayCommand(
Action executeMethod,
Func<bool> canExecuteMethod,
)
现在假设我编写了一个带有属性并将其转换为bool的命令。假设:
public Boolean Active { get; set;}
和
Func<Boolean, Boolean> checkProperty = x => x;
现在我想知道为什么这会因类型检查而失败?
RelayCommand(somethingunrelated, checkProperty(Active));
谢谢!
答案 0 :(得分:3)
您正在定义Func
,其中一个输入bool
值返回bool。
Func<Boolean, Boolean> checkProperty
但是你的RelayCommand
构造函数接受一个没有输入参数的Func委托。只返回bool类型的值。将其更改为:
public RelayCommand(
Action executeMethod,
Func<bool,bool> canExecuteMethod,
)
编辑:
根据Alex Joukovsky的建议,使用具有更好语义的Predicate<bool>
。见this MSDN link
public RelayCommand(
Action executeMethod,
Predicate<bool> canExecuteMethod,
)
答案 1 :(得分:0)
你的功能必须像
bool checkProperty()
{
return Actcive;
}
然后你可以使用
RelayCommand(somethingunrelated, checkProperty);