0

我有一个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);
}

我正在尝试从UI.Pages.SomePage这样的内部使用它:

XAML

<controls:CustomButton Text="New..." Click="NewButton_Click"/>

C#

public void NewButton_Click(object sender, RoutedEventArgs e)
{
    //do something here
}

当我调试应用程序时,我看到RaiseEventmy 内部UI.Controls.CustomButton被击中,但NewButton_Clickmy 内部UI.Pages.SomePage从未被调用。

当一切都在同一个命名空间中时,这是有效的......我是否遗漏了一些明显的东西?谢谢!

4

1 回答 1

8
RoutedEventArgs newEventArgs = new RoutedEventArgs(Button.ClickEvent);

应该:

RoutedEventArgs newEventArgs = new RoutedEventArgs(CustomButton.ClickEvent);
于 2012-08-14T15:23:39.590 回答