簡體   English   中英

在 WPF 中拖放重疊的 UI 對象時如何停止事件傳播

[英]How to stop event propagation when dragging and dropping overlapping UI objects in WPF

我有一個用例將項目拖到可能有多個 UI 層的區域上。

用例 1:將節點從 treeview 拖放到工作區區域(放置目標)。 在該工作區中創建一個圖表。

用例 2:將節點從 treeview 拖放到位於原始工作區上方的圖表上。 額外的數據被添加到圖表中。

我的實現的問題是,當我執行用例 2 時,會調用工作區(網格)和圖表的放置事件。 不僅僅是可見的。

其他人如何實施此方案?

要停止路由事件傳播,請在 drop 事件處理程序中設置 e.Handled = true。

我不會將您的案例稱為“多層”。 相反,它是視覺對象的正常層次結構。 對於“多層”,我的意思是,例如,幾個兄弟 canvas 的下降。

無論如何,假設在托管的放置動作中有一個獨特的點,我會收聽放置事件(冒泡)。 在事件處理程序中,有一個“ OriginalSource ”參數,指示所涉及的第一個可視 object。 此時,您可以向上掃描可視化樹( VisualTreeHelper ),搜索“圖表”元素:如果找到,則表示該下拉菜單位於圖表上,否則位於空白工作區。

希望能幫助到你。

干杯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM