1. 程式人生 > >WPF 定義Command

WPF 定義Command

rlogin log use nta query wpf val nbsp invoke

直接上代碼:

    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 (()={添加邏輯});

然後綁定即可。

WPF 定義Command