Activation d'un bouton dans WPF en fonction de la liste.SelectedIndex

j'ai une situation D'interface utilisateur assez classique - deux listes de diffusion nommées SelectedItems et AvailableItems - l'idée étant que les éléments que vous avez déjà choisi de vivre dans SelectedItems, alors que les éléments qui sont disponibles pour ajouter à SelectedItems (c'est à dire que chaque élément qui n'est pas déjà là) vivent dans AvailableItems.

J'ai aussi le < et > boutons pour déplacer la sélection d'une liste à l'autre (en plus de double cliquant, ce qui fonctionne très bien).

est-ce possible? dans WPF pour mettre en place un style/trigger pour activer ou désactiver les boutons move en fonction de tout ce qui est sélectionné dans l'une ou L'autre liste? SelectedItems est sur le côté gauche, donc le < bouton va déplacer le AvailableItems à cette liste. Cependant, si aucun item n'est sélectionné (AvailableItems.SelectedIndex == -1), je veux que ce bouton sera désactivé (IsEnabled == false) - et dans l'autre sens pour l'autre liste/bouton.

est - ce possible de le faire directement dans XAML, ou Ai-je besoin de créer une logique complexe dans le codebehind pour gérer il?

23
demandé sur demonplus 2008-08-20 17:13:16

2 réponses

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>
42
répondu Will 2013-05-31 01:00:35

moins de solution de code:

<Button Name="button1" IsEnabled="{Binding ElementName=listBox1, Path=SelectedItems.Count}" />

si le compte est 0 qui semble correspondre à false, > 0 à true.

71
répondu Karlas 2012-09-18 11:25:55