.net 从用户控件传递事件';s儿童控制-最直接的方式?
我的UserControl包含一个按钮。我希望按钮的单击事件直接“通过”传递给用户控件的用户。他们会将其视为一个名为“ButtonClick”的事件.net 从用户控件传递事件';s儿童控制-最直接的方式?,.net,wpf,events,user-controls,.net,Wpf,Events,User Controls,我的UserControl包含一个按钮。我希望按钮的单击事件直接“通过”传递给用户控件的用户。他们会将其视为一个名为“ButtonClick”的事件 public event RoutedEventHandler ButtonClick { add { _button.Click += value; } remove { _button.Click -= value; } } 这种方法行不通。我确实在客户端代码中添加了ButtonClick的处理程序,但是单
public event RoutedEventHandler ButtonClick
{
add { _button.Click += value; }
remove { _button.Click -= value; }
}
这种方法行不通。我确实在客户端代码中添加了ButtonClick的处理程序,但是单击按钮不会在那里调用它
我可能错过了一些简单的东西,因为我对WPF还是新手。按钮单击事件是一个路由事件,这意味着它在应用程序的可视树中上下移动,这意味着按钮的任何父级都可以处理此事件。因此,您不必添加自己的逻辑来支持这一点,即您的代码是冗余的 有关如何注册此路由事件的处理程序,请参见以下内容:
Colin E.您必须注册RoutedEvent:
public static readonly RoutedEvent ButtonClickEvent = EventManager.RegisterRoutedEvent(
"ButtonClick", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(MyUserControl));
。。然后使用该属性管理新注册的事件处理程序
public event RoutedEventHandler ButtonClick
{
add { AddHandler(ButtonClickEvent , value); }
remove { RemoveHandler(ButtonClickEvent , value); }
}
然后,当触发按钮的单击事件时,显然需要引发Routed事件:
void button_Click(object sender, EventArgs e)
{
RaiseEvent(new RoutedEventArgs(ButtonClickEvent));
}
从直接连接到按钮的本机事件处理程序只需几个步骤,但并不可怕。但是,任何父级(默认情况下)都可以访问这些内部信息,这不是很奇怪吗?此外,UserControl位于另一个程序集中。当然,如果这能奏效,我的问题就解决了。谢谢。它就是不起作用,因为我说的是用户控件,你可能错过了。投票否决?(因为我不能)这并不像我希望的那样直接。