【问题标题】:WPF Not receiving routed events from user controlWPF 未从用户控件接收路由事件
【发布时间】:2012-08-14 14:58:12
【问题描述】:

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

当我调试应用程序时,我看到我的UI.Controls.CustomButton 中的RaiseEvent 被命中,但我的UI.Pages.SomePage 中的NewButton_Click 从未被调用。

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

【问题讨论】:

  • 澄清一下,RoutedEventArgs newEventArgs = new RoutedEventArgs(Button.ClickEvent);应该是CustomButton.ClickEvent吧?
  • 我是个白痴。作为更改命名空间的一部分,我进行了重构,我想这已经通过了。非常感谢。如果您将其发布为答案,我会接受。
  • 好东西,很高兴你解决了

标签: c# wpf user-controls routed-events


【解决方案1】:
RoutedEventArgs newEventArgs = new RoutedEventArgs(Button.ClickEvent);

应该是:

RoutedEventArgs newEventArgs = new RoutedEventArgs(CustomButton.ClickEvent);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-22
    • 2013-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    相关资源
    最近更新 更多