Ich habe eine ICommand
, die ich aus dem Code auslösen möchte (mache die Ausführung gehen); Wie mache ich das?Wie programmiere ich programmatisch einen Befehl
Antwort
dort Unter der Annahme someCommand
mit commandArgs
:
if (someCommand.CanExecute(commandArgs))
{
someCommand.Execute(commandArgs);
}
Wenn Sie RoutedUICommand
‚s Execute und CanExecute verwenden, müssen Sie in einem gültigen Ziel übergeben, so dass die richtigen CommandBinding
gefunden werden kann.
Auch wenn die Handler Ihres Befehls Objekte nicht direkt ändern, sollten Sie die Verwendung von DelegateCommand von Kent Boogaart in Erwägung ziehen. Wenn Sie Delegatbefehle verwenden, wird die Geschäftslogik in das ViewModel verschoben. Dies ist besonders praktisch, wenn Sie Befehle direkt aus Code ausführen müssen und Sie keinen Zugriff auf die Ansicht (oder ein View-Objekt, aus dem Sie sprudeln können) haben zu Ihrem CommandBindings
).
Denken Sie daran, wenn Sie ein anderes Ereignis von internen Komponenten aufrufen müssen, z. B. einen Klick, sehen Sie sich die Methoden an, die mit Perform beginnen (wie PerformClick einer Schaltfläche).
Weitere Antworten sind in Ordnung, verwenden Sie nur ausführen ...
Wenn die 'Execute()' Methode tun, ist nicht das, was Sie erwarten, könnte es für uns helfen Quellcode zu haben, zu betrachten. – jheddings