2010-07-26 33 views
4

一位同事和我在聊天路由事件,我們想出了一些沒有多大意義的事情。主要是,Direct事件的目的是什麼,以及爲什麼LeftMouseButtonDownPreviewLeftMouseButtonDown直接事件,而不是鼓泡和隧道分別?直接路由事件問題

根據文檔,LeftMouseButtonDown(和預覽)事件看起來像冒泡和隧道事件一樣,除了事件在這些事件遍歷樹時引發和重新渲染之外。由於直接事件只能由事件源處理,因此任何UIElement都可以處理直接事件,因爲每個事件都在引發事件,因此也是源。 (除非重新舉辦活動與舉辦活動不同?)。爲什麼它們不像其他許多類似的事件那樣是隧道式的和冒泡的?

我和我的同事都沒有想出一個使用案例,我們將使用直接策略創建一個自定義事件(儘管我們想出了一些用於隧道和冒泡的),但最常見的一個是LeftMouseButtonDown事件(如果不是最常見的)就是使用這種策略。

任何人對這背後的理性有任何想法?

謝謝!

回答

2

我的猜測是性能,對於同一事物有多個事件需要考慮。

已經有一個MouseDown的事件,路由兩者,LeftMouseDown沒有多大意義。最後,哪個會先開火,並取消\處理第一個阻止另一個?聽起來好像兩次處理同一事件太容易了。