You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1.2 KiB
39 lines
1.2 KiB
using System.ComponentModel; |
|
using System.Runtime.CompilerServices; |
|
using System.Windows.Input; |
|
|
|
namespace SparkClient.ViewModel; |
|
|
|
public class BaseViewModel : INotifyPropertyChanged |
|
{ |
|
public event PropertyChangedEventHandler PropertyChanged; |
|
|
|
protected void OnPropertyChanged([CallerMemberName] string propertyName = null) { |
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); |
|
} |
|
|
|
|
|
public class RelayCommand : ICommand |
|
{ |
|
private readonly Action<object> _execute; |
|
private readonly Func<object, bool> _canExecute; |
|
|
|
public RelayCommand(Action<object> execute, Func<object, bool> canExecute = null) |
|
{ |
|
_execute = execute ?? throw new ArgumentNullException(nameof(execute)); |
|
_canExecute = canExecute; |
|
} |
|
|
|
public bool CanExecute(object parameter) => _canExecute == null || _canExecute(parameter); |
|
|
|
public void Execute(object parameter) => _execute(parameter); |
|
|
|
public event EventHandler CanExecuteChanged |
|
{ |
|
add { CommandManager.RequerySuggested += value; } |
|
remove { CommandManager.RequerySuggested -= value; } |
|
} |
|
} |
|
|
|
|
|
} |