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 ?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top