Activation d'un bouton dans WPF en fonction de ListBox.SelectedIndex
Question
J'ai une situation d'interface utilisateur plutôt classique - deux ListBox nommées SelectedItems
et AvailableItems
- l'idée étant que les éléments que vous avez déjà sélectionnés habitent dans SelectedItems
, tandis que les éléments disponibles pour être ajoutés à SelectedItems
(c'est à dire.chaque élément qui n'y est pas déjà) vit dans AvailableItems
.
Aussi, j'ai le <
et >
des boutons pour déplacer la sélection en cours d'une liste à l'autre (en plus du double clic, qui fonctionne très bien).
Est-il possible dans WPF de configurer un style/déclencheur pour activer ou désactiver les boutons de déplacement en fonction de tout ce qui est sélectionné dans l'une ou l'autre ListBox ? SelectedItems
est sur le côté gauche, donc le <
Le bouton déplacera la sélection AvailableItems
à cette liste.Cependant, si aucun élément n'est sélectionné (AvailableItems.SelectedIndex == -1
), je souhaite que ce bouton soit désactivé (IsEnabled == false
) - et inversement pour l'autre liste/bouton.
Est-ce possible de le faire directement en XAML, ou dois-je créer une logique complexe dans le code-behind pour le gérer ?
La solution
Voici votre solution.
<Button Name="btn1" >click me
<Button.Style>
<Style>
<Style.Triggers>
<DataTrigger
Binding ="{Binding ElementName=list1, Path=SelectedIndex}"
Value="-1">
<Setter Property="Button.IsEnabled" Value="false"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
Autres conseils
Moins de solution de code :
<Button Name="button1" IsEnabled="{Binding ElementName=listBox1, Path=SelectedItems.Count}" />
Si le nombre est 0, cela semble correspondre à faux, > 0 à vrai.