我想清楚解释如何在每种情况下确定哪个控件是发件人,哪一个是隧道事件和冒泡事件中WPF路由事件事件的来源。
修改 假设您有一个事件处理程序,另外两个控制另一个子节点。处理程序位于父控件中。我如何事先知道并且没有调试哪个控件作为发送者传递,哪个控件作为e.source传递?当你考虑冒泡或隧道事件时,这会改变吗?事件的一般概念对我来说很清楚,但我想了解在事件处理程序中使用哪个参数来识别两个控件而无需调试
答案 0 :(得分:0)
可能没有详尽的“明确解释”,因为有很多方法可以结束事件。特别是当许多事件使用EventArgs.Empty
时,因为除了源之外没有其他细节。
http://msdn.microsoft.com/en-us/library/17sde2xt(v=VS.100).aspx
或者更具体地说:
RoutedEvent: Source vs. OriginalSource
您是否有需要回答的特定问题?
来自上述链接文章的编辑:,答案类似于您的评论
考虑一个由TextBlock组成的自定义控件(在本例中称为CustomControl1)。 在TextBlock上引发MouseDown事件时,OriginalSource属性将是 TextBlock,但在CustomControl1的处理程序中,Source将更改为CustomControl1 object,以便沿事件路径的其他元素知道CustomControl1收到了一个 的MouseDown。