Frage

Wie kann ich die RelayCommand in wpf verwenden?

War es hilfreich?

Lösung

Relay Befehl existiert nicht in WPF, es ist nur eine externe Klasse, die auf Prominenz angehoben, nachdem es in dieser MSDN-Artikel . Sie müssen es selbst schreiben, wenn Sie es verwenden möchten.

Ansonsten können Sie Sie die Delegate Befehl aus dem WPF-Toolkit hier , die hat ein wenig zusätzliche Funktionalität über den RelayCommand Code.


Ah, die Frage geändert, während ich diese Antwort tippte. Unter der Annahme, dass Sie die RelayCommand verwenden, wie oben definiert Sie es mit einem oder zwei Delegierte versorgen müssen, eine, die eine Bool zurückgibt, der bestimmt, ob der Befehl in einem gültigen Zustand ausgeführt werden soll, und eine zweite, die nichts zurückkehrt und tatsächlich läuft die Befehl. Wenn Sie nicht über eine „CanRun“ delegieren liefern, dann wird der Befehl der Ansicht, dass es immer in einem gültigen Zustand ist. Der Code in dem Artikel verwendet:

RelayCommand _saveCommand;
public ICommand SaveCommand
{
    get
    {
        if (_saveCommand == null)
        {
            _saveCommand = new RelayCommand(param => this.Save(),
                param => this.CanSave );
        }
        return _saveCommand;
    }
}

Deklariert einen RelayCommand, die die Save () Methode aufrufen, wenn die CanSave Eigenschaft als Test für die Gültigkeit ausgelöst und zurück. Wenn dieser Befehl an eine Schaltfläche in WPF gebunden ist, die IsEnabled Eigenschaft des Button wird die CanSave Eigenschaft des Ansichtsmodell passen und wenn die Schaltfläche geklickt wird (vorausgesetzt, es aktiviert ist) wird die Methode Save () auf der Ansichtsmodell aufgerufen werden.

Andere Tipps

Als Alternative RelayCommand Wrapper für alle Methoden zur Schaffung kann ich eine freie Bibliothek und Quelle vorschlagen, die Ihnen erlauben, die Bindung {BindTo Save()} zu verwenden. Ich habe es meine Bindungen zu vereinfachen. Es macht auch relative Bindung viel einfacher. Sie können es hier finden: http://www.simplygoodcode.com/2012 /08/simpler-wpf-binding.html

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top