我需要一个从父控件到子控件的隧道路由事件隧道的简单示例。
(这是 NOT REAL CODE) - 事实上,我越深入,我越认为XAML是错误的 - 可能不应该注册XAML中的隧道事件子节点(不确定?)
<PARENT>
<MyControl DoSomethingOnUserAction="raiseTunnelEvent"> HELP </MyControl >
<CHILD> I SHOULD HANDLE tunnelled event </CHILD>
</PARENT>
简单,简洁的例子会很有帮助。
谢谢, 艾伦
答案 0 :(得分:3)
不确定,但你可能想要一只猫吠。
Button的RoutedEvent ClickEvent(来自PresentationFramework)声明为:
public static readonly RoutedEvent ClickEvent =
EventManager.RegisterRoutedEvent("Click",
RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof
(ButtonBase));
请注意readonly
的{{1}} RoutingStrategy
。
以下内容可能有助于理解Tunnel,Bubble和Direct: msdn.microsoft.com/en-us/library/system.windows.routingstrategy.aspx
这应该会让你完全接受: msdn.microsoft.com/en-us/magazine/cc785480.aspx
提示:按照惯例,WPF中的隧道事件以“预览”开头(例如 - “PreviewExplode”。如果事件不以“预览”开头,它可能不会使用隧道RoutingStrategy。您通常也会看到隧道和泡泡与隧道一起射击然后是“预览爆炸”,然后是“爆炸”,然后是“爆炸”。
如果你需要一个Button的Click隧道,你可以考虑
答案 1 :(得分:2)
事实证明,我使用Visual Studio 2008进行WPF操作,第149页,有一个非常具有误导性的图表,似乎表明可以在父节点中引发RoutedEvents,并将该路由事件隧道传输到子节点。
事实证明并非如此......糟糕图表的半天吹b / c(否则相当不错的书)[ISBN:1-933988-22-3]