2012-04-13 10 views
8

En mi control de usuario tengo un botón que, al hacer clic, levantaría un evento enrutado personalizado. Intenté subirlo, pero no se dispara en MainWindow.xaml.¿Cómo puedo generar un evento enrutado personalizado desde el control del usuario?

Xaml para el botón de control de usuario:

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

control de usuario del código de C:

//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(); 
     } 

Código Xaml para el control de usuario Instancia en 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ódigo C# que debería ser despedido en MainWindow.xaml.cs:

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

Respuesta

16

es necesario llamar a

RaiseEvent(new RoutedEventArgs(AddClickEvent)); 
+0

Gracias. Pensé que debía llamar a 'RaiseAddClickEvent()'. –

+3

Eso es lo que debería hacer RaiseAddClickEvent() en realidad. –

Cuestiones relacionadas