2012-04-13 16 views
8

W mojej kontroli użytkownika mam przycisk, który po kliknięciu podniósł niestandardowe wydarzenie routowane. Próbowałem go podnieść, ale nie został zwolniony w MainWindow.xaml.Jak mogę podnieść niestandardowe wydarzenie routowane ze sterowania użytkownika?

Xaml dla przycisku w UserControl:

<Button x:Name="PART_Add" Content="+" Grid.Column="3" Margin="0,0,0,0" Style="{DynamicResource dTranspButton}" Click="btnAdd_Click"/> 

UserControl C# Kod:

//AddClick Event 

     public static readonly RoutedEvent AddClickEvent = EventManager.RegisterRoutedEvent("AddClick", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(dCB_Props)); 

     public event RoutedEventHandler AddClick 
     { 
      add { AddHandler(AddClickEvent, value); } 
      remove { RemoveHandler(AddClickEvent, value); } 
     } 

     void RaiseAddClickEvent() 
     {    
      RoutedEventArgs newEventArgs = new RoutedEventArgs(dCB_Props.AddClickEvent); 
     } 

     protected void OnAddClick() 
     { 
      RaiseAddClickEvent(); 
     } 

//objects events 

     private void btnAdd_Click(object sender, System.Windows.RoutedEventArgs e) 
     { 
      RaiseAddClickEvent(); 
     } 

kod Xaml dla usercontrol Instancji w MainWindow.xaml:

<local:dCB_Props x:Name="cb1" Margin="41.166,0,36.19,25" VerticalAlignment="Bottom" Height="30" Width="141" AddClick="dCB_Props_AddClick"> 
    <local:dCB_Props.Items> 
     <ComboBoxItem Content="item1"/> 
    </local:dCB_Props.Items> 
</local:dCB_Props> 

C# kod, który powinien zostać zwolniony w MainWindow.xaml.cs:

private void dCB_Props_AddClick(object sender, System.Windows.RoutedEventArgs e) 
{ 
    MessageBox.Show("This Works"); 
} 

Odpowiedz

16

Trzeba zadzwonić

RaiseEvent(new RoutedEventArgs(AddClickEvent)); 
+0

Dzięki. Myślałem, że powinienem nazwać 'RaiseAddClickEvent()'. –

+3

To właśnie powinien zrobić program RaiseAddClickEvent(). –