Domanda

Ho una situazione dell'interfaccia utente piuttosto classica: due ListBox denominate SelectedItems E AvailableItems - L'idea è che gli elementi che hai già selezionato risiedano SelectedItems, mentre gli elementi disponibili per l'aggiunta SelectedItems (cioè.ogni oggetto che non sia già lì) vivono dentro AvailableItems.

Inoltre, ho il < E > pulsanti per spostare la selezione corrente da un elenco all'altro (oltre al doppio clic, che funziona bene).

È possibile in WPF impostare uno stile/trigger per abilitare o disabilitare i pulsanti di spostamento a seconda di qualcosa selezionato in uno dei due ListBox? SelectedItems è sul lato sinistro, quindi il < Il pulsante sposterà l'elemento selezionato AvailableItems a quell'elenco.Tuttavia, se non viene selezionato alcun elemento (AvailableItems.SelectedIndex == -1), desidero che questo pulsante sia disabilitato (IsEnabled == false) - e viceversa per l'altro elenco/pulsante.

È possibile farlo direttamente in XAML o devo creare una logica complessa nel codebehind per gestirlo?

È stato utile?

Soluzione

Ecco la tua soluzione.

<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>

Altri suggerimenti

Soluzione con meno codice:

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

Se count è 0 sembra essere mappato su false, > 0 su true.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top