2013-01-17 17 views
8

Ho un popup con un TextBox che l'utente deve immettere un numero di ticket in, e quindi quando l'utente preme il tasto Invio, voglio che il numero del biglietto venga passato al ViewModel che recupererà il ticket.Come utilizzare EventTrigger e InvokeCommandAction al livello di programmazione?

Ecco il codice XAML per il TextBox:

<TextBox x:Name="TicketNumber"> 
    <i:Interaction.Triggers> 
     <i:EventTrigger EventName="KeyDown"> 
      <i:InvokeCommandAction Command="{Binding OpenTicketCommand}" 
            CommandParameter="{Binding ElementName=TicketNumber, 
                   Path=Text}"/> 
     </i:EventTrigger> 
    </i:Interaction.Triggers> 
</TextBox> 

I lavori di cui sopra in qualsiasi pressione di un tasto, ma io in realtà solo voglio che succeda quando si preme il tasto Invio. Come potrei fare per farlo?

EDIT: Io parto dal presupposto che avrebbe dovuto essere fatto a livello di codice (da qui il titolo), ma se non è troppo bene.

+1

Un approccio alternativo sarebbe quello di utilizzare InputBindigs - combinazione di tasti per attivare il comando. –

+1

@AdrianFaciu Grazie, se potessi fornire un semplice esempio sarebbe fantastico. Sono abbastanza nuovo per WPF e dovrò fare qualche ricerca per capire come funziona, quindi qualsiasi campione che puoi dare sarebbe molto apprezzato. –

risposta

19

È possibile utilizzare InputBindings - KeyBinding come approccio alternativo.

Qualcosa di simile a questo:

<TextBox x:Name="TicketNumber"> 
    <TextBox.InputBindings> 
     <KeyBinding Key="Enter" 
        Command="{Binding OpenTicketCommand}" 
        CommandParameter="{Binding ElementName=TicketNumber, 
               Path=Text}"/> 
    </TextBox.InputBindings> 
</TextBox> 
Problemi correlati