一位同事和我在聊天路由事件,我們想出了一些沒有多大意義的事情。主要是,Direct
事件的目的是什麼,以及爲什麼LeftMouseButtonDown
和PreviewLeftMouseButtonDown
直接事件,而不是鼓泡和隧道分別?直接路由事件問題
根據文檔,LeftMouseButtonDown
(和預覽)事件看起來像冒泡和隧道事件一樣,除了事件在這些事件遍歷樹時引發和重新渲染之外。由於直接事件只能由事件源處理,因此任何UIElement
都可以處理直接事件,因爲每個事件都在引發事件,因此也是源。 (除非重新舉辦活動與舉辦活動不同?)。爲什麼它們不像其他許多類似的事件那樣是隧道式的和冒泡的?
我和我的同事都沒有想出一個使用案例,我們將使用直接策略創建一個自定義事件(儘管我們想出了一些用於隧道和冒泡的),但最常見的一個是LeftMouseButtonDown
事件(如果不是最常見的)就是使用這種策略。
任何人對這背後的理性有任何想法?
謝謝!