2011-08-16 42 views
3

我有一個用於將項目拖動到可能具有多個UI圖層的區域的用例。如何在拖放WPF中的重疊UI對象時停止事件傳播

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

使用案例2:將節點從樹視圖拖放到位於原始工作區域之上的圖表上。額外的數據被添加到圖表。

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

其他人如何實施這種情況?

回答

3

要停止e.Handled =在下降事件處理程序真路由事件傳播集。

1

我不會稱你的情況爲「多層」。相反,它是可視對象的正常層次結構。對於「多層」,我的意思是,例如,在幾個兄弟畫布上放下。

無論如何,假設有一個獨特的點,在託管中的下拉動作,我會聽到下降事件(這是冒泡)。在事件處理程序中,有「OriginalSource」參數,指示涉及的第一個可視對象。此時,您可以向上掃描可視化樹(VisualTreeHelper),搜索「圖表」元素:如果找到它,則放置在圖表上,否則放在空的工作區域中。

希望它有幫助。

乾杯