/// <summary> /// 确定此命令是否可在其当前状态下执行的方法。 /// WPF 中触发 CanExecute 的条件: /// 1. 获取键盘焦点时 /// 2. Execute 调用前 /// 3. Execute 调用后。 /// </summary> /// <param name="parameter"></param> /// <returns></returns> public virtual bool CanExecute(object parameter) { // 仅在第一次获取键盘焦点时,执行 CanExecuteDelegate if (IsFirstKeyboardFocus) { // 备注:使用关键字 async 返回的 Task 会自动执行 IsCan = CanExecuteDelegate?.Invoke(parameter) ?? true; IsFirstKeyboardFocus = false; } return(Can()); }
protected override bool CanExecute(object parameter) { try { return(CanExecuteDelegate?.Invoke() ?? true); } catch (Exception ex) { _registry.HandledException(ex); return(false); } }
protected override bool CanExecute(object parameter) { try { T param = default; if (parameter is T TParam) { param = TParam; } else if (parameter != null && ThrowOnInvalidCast) { throw new InvalidCastException($"The Command expected a typeof '{typeof(T).FullName}' but recieved a parameter of type '{parameter.GetType().FullName}"); } return(CanExecuteDelegate?.Invoke(param) ?? true); } catch (Exception ex) { _registry.HandledException(ex); return(false); } }
/// <summary> /// A RelayCommand can always execute. /// </summary> /// <param name="parameter"></param> /// <returns></returns> public bool CanExecute(object parameter) => CanExecuteDelegate?.Invoke() ?? true;
public bool CanExecute(object parameter) { return(CanExecuteDelegate?.Invoke(parameter) ?? true); }