轉自http://www.cnblogs.com/helloj2ee/archive/2010/09/30/1839660.html
我看過此博主的多篇文章和著作,這篇文章有助於理解WPF的路由事件,我看的是PDF版,特此貼出來以饗讀者。
正如WPF在簡單的.NET屬性概念上添加了許多基礎的東西一樣,它也爲.NET事件添加了許多基礎的東西。路由事件是專門設計用於在元素樹中使用的事件。當路由事件觸發後,它可以向上或向下遍歷可視樹和邏輯樹,用一種簡單而且持久的方式在每個元素上觸發,而不需要使用任何定製代碼。
事件路由讓許多應用程序不去留意可視樹的細節(對於樣式重置來說這是很不錯的),並且對於成功的WPF元素創作至關重要。例如,Button有一個Click事件,這是基於底層的MouseLeftButtonDown事件或者KeyDown事件實現的。當用戶的鼠標指針位於標準按鈕之上,且按下鼠標左鍵的時候,它們實際上是與ButtonChrome或者TextBlock可視子元素在交互。由於事件遍歷了可視樹,所以Button元素最終會發現這個事件,並處理該事件。類似地,對於VCR樣式的Stop(停止)按鈕來說,一個用戶可能在Rectangle邏輯子元素上直接按下鼠標左鍵。由於事件遍歷了邏輯樹,Button元素還是會發現這個事件,並處理該事件。(如果你真的希望能夠區分這個事件是Rectangle上的還是凸出的Button上的,也可以自己去區分代碼。)