WPF捕獲事件即使這個事件被標記為Handled

2021-09-06 09:34:30 字數 726 閱讀 1774

前面的博文:wpf拖動總結

中debuglzq遇到的問題是:debuglzq給容器中所有ui控制項註冊乙個mouseleftbutton事件,button控制項無法捕獲這兒事件的問題,加個斷點看下,程式根本不到達這個地方。當時只是簡短的提了一下,覺得不夠,因此決定再發一篇博文來說一下。

foreach (uielement uiele in

layoutroot.children)

有人說更改button控制項的clickedmode=hover,debuglzq試了下問題多多,瞎扯淡。

類似的問題還有,如我想實現拖動textbox控制項的時候也不行,mouseleftbuttondown事件依然無法觸發。

用的更多的場景是,我程式中有乙個第三方控制項,我需要捕獲這個控制項的某個路由事件,但是這個事件在該第三方控制項的事件處理中被標記為handled=true,我們可以怎麼來做?

下面是解決問題的**片段:

if (uiele is button || uiele is

textbox)

這個**的關鍵點是最後那個true,它告訴wpf引擎call這個handle,即使它被標記為handled=true。

由此可見,wpf路由事件被標記為handled以後,並不是不在visual tree上傳遞了;而是,不去call這個handler了。

希望對你有幫助~

WPF捕獲事件即使這個事件被標記為Handled

前面的博文 wpf拖動總結 中debuglzq遇到的問題是 debuglzq給容器中所有ui控制項註冊乙個mouseleftbutton事件,button控制項無法捕獲這兒事件的問題,加個斷點看下,程式根本不到達這個地方。當時只是簡短的提了一下,覺得不夠,因此決定再發一篇博文來說一下。foreach...

WPF 捕獲鍵盤輸入事件

原文 wpf 捕獲鍵盤輸入事件 最近修改的乙個需求要求捕獲鍵盤輸入的 text,包括各種標點符號。最開始想到的是 previewkeydown 或者 previewkeyup 這樣的鍵盤事件。但是這兩個事件的物件 keyeventargs 不夠用,得依靠判斷 key 來判斷輸入了什麼,然後再根據判斷...

事件冒泡,事件捕獲

js事件流中有一種事件被稱為 冒泡事件 當乙個元素被觸發乙個事件時,該目標元素上的事件會優先被執行,然後向外傳播到每個祖先元素,恰如水裡的乙個泡泡似的,從產生就一直往上冒,到達水平面時,它才消失。在這個過程中,如果你只希望觸發目標元素上的事件,而不想它傳播到祖先元素上去,那麼你需要在 泡泡 離開物件...