2014-07-17 19 views
5

ContentControl için program aracılığıyla bir olay tetikleyicisi oluşturmak istiyorum. Bu xaml kodunu kullanacağım gibi aynı sonucu elde etmek istiyorum. Dahil - Benim xaml kodunu arar Nasıl Komutanlığı, CommandParameter, eventName

: BuradaProgram aracılığıyla denetim için bir olay tetikleyici nasıl oluşturulur

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

Ne yapmak istediğim bir olay tetikleyici oluşturmaktır" Oku ContentControl'ü programatik olarak komutlamak için. ", sorununuzu bildiğinizi unutun ve söylemeye çalıştığınız şeyleri anlamanız gerektiğini düşünün. Ben biri sizi anlamıyor – Dbl

+0

Şimdi daha açık mı @ AndreasMüller? – Edgar

+0

kesinlikle daha iyi, evet – Dbl

cevap

8

koda eşdeğer:

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

Çok teşekkür ederim! Sen hayat kurtarıcısın. :) – Edgar

İlgili konular