WPF Conditionnelle de Liaison. Bouton.IsEnabled à SelectedIndex >= 0
Je veux lier à un les boutons de IsEnabled
propriété d'un état comme la myObject.SelectedIndex >= 0
. Est-il une façon simple de le faire dans le code xaml (sans avoir à faire des choses folles pour tout les objets sous-jacents)? Je n'ai pas vraiment vu d'un bon exemple.
Honnêtement, je souhaite que ce soit aussi facile que de Flex 3 ... I. E.:
<mx:Button enabled="{dataGrid.SelectedIndex >= 0}" ...
OriginalL'auteur Chris Klepeis | 2010-05-26
Vous devez vous connecter pour publier un commentaire.
SelectedIndex est -1 si rien n'est sélectionné, un clic droit? L'inverse à la logique et à l'utilisation d'un déclencheur:
MultiDataTrigger est utilisé lorsque les conditions sont anded ensemble. Faire SelectedIndex>=1 copiez le datatrigger pour '-1' et changez la valeur de déclenchement sur "0".
OriginalL'auteur Matt Hamilton
Je n'ai pas trouvé particulièrement simple à utiliser de manière à intégrer une expression dans le code XAML, donc voici ce que j'ai été en utilisant à la place:
Vous aurez à écrire, dans C#, par exemple, dans la fenêtre du constructeur.
Cela fonctionne aussi parfaitement pour les multi-sources liaisons:
Observer que le lambda est statiquement typé, et tout type d'erreurs sont (relativement) bruyant, en aidant les traquer. Le lambda de type de retour est également prise en compte; vous pouvez l'utiliser pour lier la largeur d'un objet à une formule complexe en fonction de la largeur d'un autre...
Ce
LambdaBinding
classe n'est pas intégré; vous devez inclure le LambdaBinding.cs fichier.Note de côté. C'est une véritable honte que XAML n'autorise pas les expressions. Oui, je me rends compte XAML est censé être "concepteurs" et à l'abri de cette insaisissable chose que nous appelons la la logique de l'application, mais qui sommes-nous une blague ici... tout d'Abord, la
DataTrigger
montré dans l'autre réponse est fondamentalement une expression conditionnelle, et donc pas de différent (seulement beaucoup plus longue){Binding source.SelectedIndex >= 0}
. Deuxièmement, si l'idée est la simplicité, alors les expressions de liaison, qu'un designer doit être capable d'écrire sont de loin les capacités d'un non-programmeur... si vous avez besoin de preuves, considérer quelque chose comme ceci:OriginalL'auteur Roman Starkov