2010-05-09 101 views
1

我試圖從一個窗口的一部分拖放(幻燈片)Silverlight元素到另一個窗口。Silverlight拖放(沒有畫布)

我已經在元素上實現了MouseLeftButtonDown,MouseMove和MouseLeftButtonUp事件處理程序,但我遇到了一些問題。

我見過的所有例子都涉及到通過設置Canvas.Left和Canvas.Top屬性來移動元素。我試圖操作的元素都不在Canvas內部。有沒有辦法根據鼠標的座標設置被拖動元素的絕對位置?或者是否有預先包裝的解決方案來解決我曾經錯過的這個問題?

+0

我在程序中遇到了完全相同的問題。我曾經看過涉及畫布控制的各種教程,但我花了幾個小時試圖調整它以適應我正在使用的控件,甚至根本不工作,但是有任何問題,很好的問題和很好的答案 – AmbiguousX 2010-07-16 14:33:38

回答

3

但Canvas中的所有面板都使用某種約束來定位子節點。只有Canvas可以讓你使用絕對定位。這就是爲什麼我認爲這是實現拖放的唯一方法。

隨意在現有面板上使用Canvas。請記住從其原始父級中刪除拖動的元素,並將其放入畫布中(或拖動某種副本),然後在鼠標上進行相反操作。

+0

我設法通過在MouseLeftButtonDown事件觸發時動態創建Canvas,使用Canvas拖動東西並在MouseLeftButtonUp被觸發時刪除Canvas來實現此功能。有點駭人,但它有效。 – JustinT 2010-05-14 14:06:59

0

實現在任何容器中絕對定位項目的一種方式,不僅是Canvas,而是使用變換而不是Left/Top屬性。例如,要設置爲Left = 50 Top = 80,可以通過轉換修改邊距值。