2014-07-17 11 views
5

Desidero creare un trigger di evento per il mio ContentControl a livello di codice. Voglio ottenere lo stesso risultato di come userei questo codice xaml. Compreso - Comando, CommandParameter, EventName

Come appare nel mio codice XAML:Come creare un trigger di evento per il controllo a livello di programmazione

<ContentControl> 
    <i:Interaction.Triggers> 
     <i:EventTrigger EventName="PreviewMouseLeftButtonDown"> 
      <i:InvokeCommandAction Command="{Binding ButtonClickCommand}" CommandParameter="btnAdd"/> 
     </i:EventTrigger> 
    </i:Interaction.Triggers> 
</ContentControl> 
+0

Leggi "Quello che voglio fare è quello di creare un trigger di evento comando per ContentControl a livello di codice. ", dimentica che conosci il tuo problema e immagina che dovresti capire cosa stai cercando di dire. Io per primo non ti capisco – Dbl

+0

Ora è più chiaro @ AndreasMüller? – Edgar

+0

decisamente meglio, sì – Dbl

risposta

8

Ecco l'equivalente in codice:

void SetTrigger(ContentControl contentControl) 
{ 
    // create the command action and bind the command to it 
    var invokeCommandAction = new InvokeCommandAction { CommandParameter = "btnAdd" }; 
    var binding = new Binding { Path = new PropertyPath("ButtonClickCommand") }; 
    BindingOperations.SetBinding(invokeCommandAction, InvokeCommandAction.CommandProperty, binding); 

    // create the event trigger and add the command action to it 
    var eventTrigger = new System.Windows.Interactivity.EventTrigger { EventName = "PreviewMouseLeftButtonDown" }; 
    eventTrigger.Actions.Add(invokeCommandAction); 

    // attach the trigger to the control 
    var triggers = Interaction.GetTriggers(contentControl); 
    triggers.Add(eventTrigger); 
} 
+1

Grazie mille! Sei un risparmiatore di vita. :) – Edgar

Problemi correlati