WPF-Bedingte Bindung. - Taste.IsEnabled zu SelectedIndex >= 0
Ich soll binden eines buttons IsEnabled
- Eigenschaft auf einen Zustand wie myObject.SelectedIndex >= 0
. Gibt es eine einfache Möglichkeit, dies zu tun in der xaml (zimmerreserviereung, ohne das Sie verrückte Dinge tun, um alle darunter liegenden Objekte)? Ich habe nicht wirklich gesehen, ein gutes Beispiel.
Ehrlich, ich wünschte, dies war so einfach wie das Flex 3 ... I. E.:
<mx:Button enabled="{dataGrid.SelectedIndex >= 0}" ...
Du musst angemeldet sein, um einen Kommentar abzugeben.
SelectedIndex den Wert -1, wenn nichts ausgewählt ist, richtig? Drehen Sie Ihre Logik und einen trigger verwenden:
Habe ich nicht gefunden eine besonders einfach zu bedienende Möglichkeit zum einbetten von einem Ausdruck in XAML, also hier ist was ich habe mit statt:
Werden Sie haben, dies zu schreiben, in C#, zum Beispiel in der Fenster-Konstruktor.
Dies funktioniert auch nahtlos für multi-Source-Bindungen:
Beachten Sie, dass die lambda ist statisch typisiert, und jede Art von Fehlern sind (relativ) laut, zu helfen, Sie aufzuspüren. Die lambda-Rückgabetyp ebenfalls berücksichtigt; Sie können diese binden Sie die Breite eines Objekts auf eine komplexe Formel auf der Grundlage der Breite der anderen...
Diese
LambdaBinding
- Klasse ist nicht eingebaut; Sie enthalten die LambdaBinding.cs Datei.Seite beachten. Es ist wirklich schade, dass XAML nicht zulassen, Ausdrücken. Ja, ich begreife, XAML soll "für Designer" und frei von dieser schwer fassbaren Ding nennen wir Anwendungslogik, aber wer sind wir verarschen hier... Erstens der
DataTrigger
gezeigt, in der anderen Antwort ist im Grunde eines bedingten Ausdrucks, und so nicht anders (nur viel mehr) als{Binding source.SelectedIndex >= 0}
. Zweitens, wenn die Idee ist die Einfachheit, dann die Bindung Ausdrücken, dass ein designer sollte in der Lage sein, zu schreiben, sind weit über die Fähigkeiten eines nicht-Programmierer... wenn Sie einen Nachweis brauchen, sollten etwas wie diese: