internal class DelegateCommand : ICommand
{
public event EventHandler? CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
public DelegateCommand(Action<object?> executeAction, Func<object?, bool>? canExecuteFunc = null)
{
ExecuteAction = executeAction;
CanExecuteFunc = canExecuteFunc;
}
public bool CanExecute(object? parameter)
{
return CanExecuteFunc == null || CanExecuteFunc(parameter);
}
public void Execute(object? parameter)
{
ExecuteAction?.Invoke(parameter);
}
public Action<object?>? ExecuteAction { get; set; }
public Func<object?, bool>? CanExecuteFunc { get; set; }
}
internal class NotificationObject : INotifyPropertyChanged
{
public event PropertyChangedEventHandler? PropertyChanged;
protected void NotifyPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}