2012-04-13 11 views
8

Nel mio controllo utente ho un pulsante che, quando cliccato, solleva un evento indirizzato personalizzato. Ho tentato di risolverlo, ma non viene attivato in MainWindow.xaml.Come posso generare un evento indirizzato personalizzato dal controllo utente?

XAML per il pulsante in UserControl:

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

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

XAML per l'UserControl grado nella 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> 

codice C# che dovrebbe essere licenziato in MainWindow.xaml.cs:

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

risposta

16

è necessario chiamare

RaiseEvent(new RoutedEventArgs(AddClickEvent)); 
+0

Grazie. Pensavo che dovessi chiamare 'RaiseAddClickEvent()'. –

+3

Ecco cosa dovrebbe fare RaiseAddClickEvent(). –

Problemi correlati