2010-10-17 37 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,並且可以影響如何將輸入事件報告給其事件路由中的其餘元素。預覽處理行爲可以表現出特定的路由事件不會像預期的那樣出現。有關更多信息,請參閱預覽事件和輸入概述。