2010-10-17 31 views

回答

10

没有区别......第一个是第二个快捷方式。

事实上,如果你试图左右逢源,然后使用反射来拆卸组装,你可以看到它的完全相同,都被解释为:

_btnAddNew.Click += new RoutedEventHandler(OnAddNewClick); 
+0

然而,第一个更令人愉快的阅读。 :) – Vlad 2010-10-17 09:06:19

0

复制来自: http://msdn.microsoft.com/en-us/library/system.windows.routedeventhandler.aspx

RoutedEventHandler委托用于任何不报告事件数据中事件特定信息的路由事件。有很多这样的路由事件;突出的例子包括点击和加载。

编写路由事件的处理程序与通用公共语言运行时(CLR)事件相比,最显着的区别是事件的发送者(处理程序连接和调用的元素)不能被视为一定是事件的根源。源被报告为事件数据中的属性(来源)。发送者和源之间的区别在于通过元素树遍历路由事件期间,事件被路由到不同元素的结果。

如果您故意对直接或冒泡的路由事件的路由行为不感兴趣,并且您只打算处理首次引发的元素上的路由事件,则可以使用sender或Source作为对象引用。在这种情况下,发件人和来源是同一个对象。

如果您打算利用路由事件的固有特性并相应地编写处理程序,则在编写事件处理程序时,您将使用的两个最重要的事件数据属性是Source和Handled。

对于输入事件和WPF控件类的某些组合,引发事件的元素不是第一个有机会处理它的元素。如果输入事件具有该事件的预览版本,则元素树的根具有第一机会,可以在共享事件数据中将Handled设置为true,并且可以影响如何将输入事件报告给其事件路由中的其余元素。预览处理行为可以表现出特定的路由事件不会像预期的那样出现。有关更多信息,请参阅预览事件和输入概述。