WPF ListBox巢狀與事件冒泡

2021-09-19 21:06:06 字數 1080 閱讀 6346

原文:

【wpf】listbox巢狀與事件冒泡

問題:兩個listbox巢狀後,當滑鼠位於內部listbox上,滑鼠滾輪事件會被內部listbox接收,導致外層listbox不能用滑鼠滾輪滑動!現在的需求是該事件要能給外部listbox處理,即巢狀的listbox應該由外層listbox來接收滑鼠滾輪事件。

<

listbox

>

<

listbox

>

<

listbox

.itemtemplate

>

<

datatemplate

>

datatemplate

>

<

listbox

.itemtemplate

>

listbox

>

listbox

>

思路:根據wpf的冒泡路由事件,滑鼠滾輪事件首先會被內層的listbox接收。此時該事件被攔截後直接將它標記為已處理(不讓內部listbox的滾輪滑動),然後再手動激發乙個滑鼠滾輪事件,該事件自動向上冒泡就能被外層listbox接收到。

給內層listbox註冊乙個滑鼠滾輪事件。

<

listbox

x:name

="innerlb"

previewmousewheel

="innerlb_previewmousewheel"

>

後台**處理該事件。

///

///問題:內層的listbox攔截了滑鼠滾輪事件,導致外層listbox不能用滑鼠滾輪滑動。

///辦法:內層listbox攔截滑鼠滾輪事件後,再手動激發乙個滑鼠滾輪事件,讓事件冒泡給外層listbox接收到。

//////

///private

void innerlb_previewmousewheel(object

sender, mousewheeleventargs e)

}

參考:

WPF ListBox顏色交替及以擊事件實現

wpf內建的兩大專用屬性itemscontrol.alternationcount 屬性和 itemscontrol.alternationindex 附加屬性來完成交替條目的樣式改變。itemscontrol.alternationcount itemscontrol的交替項容器數。itemsco...

ListView巢狀webView 事件衝突解決

解決如下 mwebview.setontouchlistener new view.ontouchlistener break case motionevent.action cancel case motionevent.action up listview.requestdisallowinte...

ListView巢狀webView 事件衝突解決

解決如下 mwebview.setontouchlistener new view.ontouchlistener break case motionevent.action cancel case motionevent.action up listview.requestdisallowinte...