Ich weiß, dass ich bereits Fragen zu diesem Thema gestellt habe, aber etwas ist einfach verwirrend. Ich mache ein Tutorial über WPF MVVM-Muster, aber es scheint, dass ich es nicht richtig, wie im Tutorial, es nicht ins Detail gehen, wie die ICommand-Schnittstelle zu implementieren. (nicht sicher, wie richtig es wirklich ist?!!)
Ich habe die folgende Implementierung von ICommand:
class ViewCommand : ICommand
{
#region ICommand Members
private Predicate<object> _canExecute;
private Predicate<bool> _execute(object param);
public ViewCommand(Action<object> action)
{
}
public bool CanExecute(object parameter)
{
return _canExecute == null ? true : _canExecute(parameter);
}
public void Execute(object parameter)
{
_execute(parameter);
}
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
#endregion
}
und jetzt diese Verwendung:
class StartViewModel : ViewModel
{
public ViewCommand startViewCommand;
public ViewCommand StartCommand
{
get
{
if (startViewCommand == null)
startViewCommand = new ViewCommand(
param => this.StartApplication()); // StartApplication returns void
return startViewCommand;
}
}
Ich kann nicht herausfinden, was mein Konstruktor der ViewCommand
Klasse zu tun hat? In der StartViewModel
Klasse wird ein Lambda-Ausdruck im Konstruktor verwendet, also muss es einen Delegaten geben, aber ich bin nicht sicher, was und wie es mit Execute und CanExecute funktionieren soll. Ich habe eine Action<object>
aber das ist wahrscheinlich falsch...
Schließlich kann jemand mich auf ein Tutorial verweisen, wie ICommand zu implementieren, die es erklärt?
Merci !