如果有人能用一个简单的例子来解释,我将不胜感激。
答案 0 :(得分:20)
想象一个包含密集的子控件层次结构的窗口。现在让我们假设您想要做某事,在窗口的任何地方都可以右键单击。
答案 1 :(得分:1)
路线事件是具有更多“旅行能力”的事件,如 Gishu的答案中所述。路由事件由RoutedEvent类+普通.NET事件的实例表示,它包装它:
public class MyClassWithARoutedEvent : UIElement
{
public static readonly RoutedEvent DoSomethingEvent;
public event RoutedEventHandler DoSomething
{
add { base.AddHandler ( MyClassWithARoutedEvent.DoSomethingEvent, value );
remove { base.AddHandler ( MyClassWithARoutedEvent.DoSomethingEvent, value );
}
}
在这种情况下,您通常会使用吹捧的事件:
此外值得一提的是,您可以在控件中使用RoutedEvent,即使它没有定义它,甚至可以从元素继承。那是因为您可以将RoutedEvent实例视为事件的强类型名称。因此,如果您可以访问此“名称”(这就是为什么路由事件的实例通常是公开的),您可以欠它:
public class MyClassWithARoutedEvent : UIElement
{
public static readonly RoutedEvent ClickEvent;
static MyClassWithARoutedEvent ( )
{
ClickEvent = ButtonBase.ClickEvent.AddOwner( typeof ( MyClassWithARoutedEvent ) );
}
// A wrapper should be placed here as described above
}