坑死我啊,乙個WPF Adorner使用注意事項

2022-01-23 17:37:24 字數 979 閱讀 6114

專案中遇到這樣的要求,乙個button用乙個adorner裝飾,這個adorner上又有乙個button,如下面這樣

此時,我們在點選小button的時候只希望處理小button的事件,可是這時候,居然大button的事件也觸發了。按道理上講,adorner和button不在視覺化樹的乙個層次上,即使冒泡也不可能冒到另乙個分支上呀?這不科學呀,於是乎見鬼了~~。

於是乎自己做了乙個簡單的demo,怕因為工程中干擾因素太多導致的bug,可是!居然還是發生了!這個bug卡我乙個星期你信不?還是直說吧,畢竟也不是很嚴重的問題。

我們要放置其他控制項到adorner上,就需要adorner有乙個容器可以容納,一般我喜歡用visualcollection

public

notifyadorner(uielement adornedelement)

: base

(adornedelement)

adornerelement就是被裝飾的ui元素,我們用它來初始化了visualcollection,而細看visualcollection的引數,表示乙個父級~~,那麼問題就很明顯了,雖然我們在adorner上有小button,但是它卻是屬於大button內的視覺化元素,那麼點選小button,冒泡到父級同樣要觸發事件,好,現在我們把小button的按鈕事件加上e.handled=true,果然,大button事件沒有呼叫。修改adorner如下

public

notifyadorner(uielement adornedelement)

: base

(adornedelement)

這樣,就正確了。

另外乙個就是,有時候不得以需要和被裝飾的元素互動,但礙於上層有乙個adorner(完全擋住),這個時候就可以使用以下這種思路。

demo:

MFC 是乙個悲劇啊

今天用 visual c 課程設計案例精編 第乙個例子是gpa計算器,遇到了好幾個問題,這裡說一下,太糾結了,水平不足啊 錯誤 在做乙個字處理程式時,我在cview類中定義了乙個carray變數 carray arscore 但是在編譯的時候這條語句卻出現了錯誤,請問這條語句有什麼問題呢 error...

把我坑慘的乙個update語句

問題歸納起來就是 在mysql裡面update一條記錄,語法都正確的,但記錄並沒有被更新.剛遇到這個問題的時候,我拿到這條語句直接在測試庫裡面執行了一把,發現確實有問題,但和開發描述的還是有區別,這裡我用測試資料來模擬下 有問題的sql語句 執行之前的記錄是這樣的 執行之後的記錄是這樣的 可以看到,...

我的第乙個subscriber踩坑記錄

為了得到autoware歐式聚類演算法處理後的雷射雷達點雲聚類資料,我打算在autoware建ros功能包,直接利用autoware的資料格式將資料讀出來。下面是我的踩坑記錄1.開啟錄製的實驗資料 2.啟動autoware以及歐式聚類演算法 3.rostopic list檢視話題列表 4.rosto...