WPF未从用户控件接收路由事件

Fly*_*del 0 c# wpf user-controls routed-events

我有一个UserControl充当自定义按钮,但由于我更改了我的命名空间围绕路由点击事件不再有效.基本上我的命名空间看起来像这样:

UI
UI.Controls
UI.Pages

我有一个UI.Controls.CustomButton路由点击事件实现如下:

public static readonly RoutedEvent ClickEvent = EventManager.RegisterRoutedEvent(
     "Click", 
     RoutingStrategy.Bubble, 
     typeof(RoutedEventHandler), 
     typeof(CustomButton));

public event RoutedEventHandler Click
{
     add { AddHandler(ClickEvent, value); }
     remove { RemoveHandler(ClickEvent, value); }
}

private void Border_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
     Border_MouseEnter(sender, e);
     RaiseClickEvent();
}

private void RaiseClickEvent()
{
     RoutedEventArgs newEventArgs = new RoutedEventArgs(Button.ClickEvent);
     RaiseEvent(newEventArgs);
}
Run Code Online (Sandbox Code Playgroud)

我试图从内部使用它UI.Pages.SomePage:

XAML

<controls:CustomButton Text="New..." Click="NewButton_Click"/>
Run Code Online (Sandbox Code Playgroud)

C#

public void NewButton_Click(object sender, RoutedEventArgs e)
{
    //do something here
}
Run Code Online (Sandbox Code Playgroud)

当我调试应用程序时,我看到RaiseEventUI.Controls.CustomButtonNewButton_Click内部被击中,但内部的我UI.Pages.SomePage从未被调用过.

当一切都在同一个命名空间时,这工作正常...我错过了一些明显的东西吗?谢谢!

Ego*_*gor 8

RoutedEventArgs newEventArgs = new RoutedEventArgs(Button.ClickEvent);
Run Code Online (Sandbox Code Playgroud)

应该:

RoutedEventArgs newEventArgs = new RoutedEventArgs(CustomButton.ClickEvent);
Run Code Online (Sandbox Code Playgroud)