【发布时间】:2012-08-14 14:58:12
【问题描述】:
我有一个UserControl,它充当自定义按钮,但是由于我更改了路由单击事件周围的命名空间,因此不再起作用。基本上我的命名空间看起来像这样:
UIUI.ControlsUI.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
}
当我调试应用程序时,我看到我的UI.Controls.CustomButton 中的RaiseEvent 被命中,但我的UI.Pages.SomePage 中的NewButton_Click 从未被调用。
当一切都在同一个命名空间中时,这是有效的......我错过了一些明显的东西吗?谢谢!
【问题讨论】:
-
澄清一下,RoutedEventArgs newEventArgs = new RoutedEventArgs(Button.ClickEvent);应该是CustomButton.ClickEvent吧?
-
我是个白痴。作为更改命名空间的一部分,我进行了重构,我想这已经通过了。非常感谢。如果您将其发布为答案,我会接受。
-
好东西,很高兴你解决了
标签: c# wpf user-controls routed-events