2012-04-13 3 views
8

내 사용자 컨트롤에서 클릭 할 때 사용자 지정 라우팅 이벤트를 발생시키는 단추가 있습니다. 나는 그것을 시도했지만 MainWindow.xaml에서 해고 당하지 않는다. UserControl에있는 버튼사용자 정의 라우팅 이벤트를 사용자 정의 컨트롤에서 발생시키는 방법은 무엇입니까?

XAML :

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

UserControl을 C# 코드 : MainWindow.xaml에서 UserControl을 예를 들어

//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 코드 :

<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# 코드가 MainWindow.xaml.cs에서 해고되어야합니다.

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

답변

16

당신은

RaiseEvent(new RoutedEventArgs(AddClickEvent)); 
+0

감사를 호출해야합니다. 나는 RaiseAddClickEvent()를 호출해야한다고 생각했다. –

+3

그것이 RaiseAddClickEvent()가 실제로해야하는 것입니다. –

관련 문제