WPF: MVVM - Schaltfläche deaktivieren, wenn Befehl null ist
Habe ich die Bindung auf einige Befehl:
<Button Command="{Binding Save}" />
Speichern ist Befehl von irgendeinem Objekt, kann aus Liste ausgewählt werden.
Im anfänglichen Zustand es ist kein Objekt ausgewählt, so dass die Bindung nicht funktioniert und CanExecute nicht aufgerufen. Wie kann ich dies deaktivieren-Schaltfläche mit MVVM?
Jungs, danke für Eure Antworten und sorry für die Vervielfältigung in Frage.
- Sie können einen Stil für die Schaltfläche mit einem DataTrigger, der deaktiviert die Schaltfläche, wenn {Binding Speichern} gleich x ist:Null.
- Danke! Ich fand die gleiche Lösung: stackoverflow.com/questions/4423746/.... Aber ich kann nicht markieren Sie Ihre Antwort als akzeptiert.
- Danke. Ich habe mein Kommentar als eine "wirkliche Antwort" (und hat die Freiheit des Hinzufügens Ihren link), so können Sie akzeptieren es jetzt. 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie einen trigger erstellen, die in XAML-Code, der deaktiviert die Schaltfläche, wenn der Befehl entspricht
x:Null
.Ein Beispiel finden Sie in der Antwort auf diese Frage: WPF/MVVM: Deaktivieren Sie den Status eines Schalters wenn das ViewModel hinter dem UserControl ist noch nicht Initialisiert?
Definieren Sie einen Befehl, der immer false zurückgeben, um die CanExecute. Deklarieren Sie eine Globale position, wie in Ihrer App.Xaml. Sie können angeben, diese leere-Befehl dann als
FallbackValue
für alle Ihre Befehl-Bindungen erwarten, dass ein null-Wert erste.Ich bin nicht sicher, dass Sie werde in der Lage sein, dies zu erreichen. Allerdings wäre eine alternative zu initialisieren, der Befehl Objekt zunächst mit einer grundlegenden ICommand, wo die CanExecute-einfach False zurück. Sie können dann ersetzen Sie dieses, wenn Sie bereit sind, die real-Befehl statt.
Haben Sie einen Blick auf die Null-Objekt-Pattern
Erstellen Sie eine NullToBooleanConverter und binden die
IsEnabled
Eigenschaft des Befehls, ausgeführt wird es durch den Konverter:Dann