有人知道为什么在MVVM Light RelayCommand的泛型类型中具体指定类型会导致其canExecute始终解析为绑定的false吗?为了获得正确的行为,我不得不使用对象,然后将其转换为所需的类型。
注意:canExecute被简化为布尔值,用于测试不起作用的块,并且通常是属性CanRequestEdit。
不起作用:
public ICommand RequestEditCommand {
get {
return new RelayCommand<bool>(commandParameter => { RaiseEventEditRequested(this, commandParameter); },
commandParameter => { return true; });
}
}
工作:
public ICommand RequestEditCommand {
get {
return new RelayCommand<object>(commandParameter => { RaiseEventEditRequested(this, Convert.ToBoolean(commandParameter)); },
commandParameter => { return CanRequestEdit; });
}
}
XAML:
<MenuItem Header="_Edit..." Command="{Binding RequestEditCommand}" CommandParameter="true"/>