直接上代码:
public class LoginDelegateCommand : ICommand { private Action _execute; private Predicate<object> _canExecute; public LoginDelegateCommand([NotNull]Action execute): this(execute, DefaultCanExecute) { } public LoginDelegateCommand([NotNull]Action execute, Predicate<object> canExecute) { this._execute = execute ?? throw new ArgumentNullException("execute"); this._canExecute = canExecute ?? throw new ArgumentNullException("canExecute"); } public bool CanExecute(object parameter) { return this._canExecute != null && this._canExecute(parameter); } public void Execute(object parameter) { UserLoginHelper.NotifyToLoginWindow(() => { this._execute(); }); } public event EventHandler CanExecuteChanged { add { CommandManager.RequerySuggested += value; this.CanExecuteChangedInternal += value; } remove { CommandManager.RequerySuggested -= value; this.CanExecuteChangedInternal -= value; } } private event EventHandler CanExecuteChangedInternal; public void OnCanExecuteChanged() { EventHandler handler = this.CanExecuteChangedInternal; handler?.Invoke(this, EventArgs.Empty); } private static bool DefaultCanExecute(object parameter) { return true; } }
在viewmodel中,定义一个Command属性
Command=new LoginDelegateCommand (()={添加逻辑});
然后绑定即可。
时间: 2024-10-10 19:47:31