WPF 定義Command
阿新 • • 發佈:2017-09-15
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