private DelegateCommand(LoadableViewModel loadableViewModel, Func <bool> canExecuteFunc)
 {
     _dependencyProperties = new Dictionary <object, HashSet <string> >();
     _loadableViewModel    = loadableViewModel ?? throw new ArgumentNullException(nameof(loadableViewModel));
     CanExecuteDependsOn(loadableViewModel, nameof(loadableViewModel.IsLoaded));
     _canExecuteFunc = canExecuteFunc;
 }
 public DelegateCommand(LoadableViewModel loadableViewModel, Func <Task> executeTask, Func <bool> canExecuteFunc = null) : this(loadableViewModel, canExecuteFunc)
 {
     ExecuteTask = executeTask ?? throw new ArgumentNullException(nameof(executeTask));
 }
 public DelegateCommand(LoadableViewModel loadableViewModel, Action executeAction, Func <bool> canExecuteFunc = null) : this(loadableViewModel, canExecuteFunc)
 {
     _executeAction = executeAction ?? throw new ArgumentNullException(nameof(executeAction));
 }