[英]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.