2013-03-03 64 views
1

我發現拖放任何控件(並且我計劃允許任何控件)在我的應用程序中拖放時都很困難,而沒有拖放目標或任何其他內容。我只想把任何控制從這裏拖到......「在那邊」。但這似乎不可能。這可能嗎?只需幾行代碼就可以在WinForms中實現拖放功能,我們如何在WPF中實現同樣的拖放支持?在WPF桌面應用程序中漫無目的地拖放

+0

您是否正在尋找在畫布上自由地重新定位(移動)控件,或者您是否真的想要「拖放」?拖放意味着您有一個拖動目標和一個放置目標,例如,將List Item從一個列表移動到另一個列表,或者重新排列列表中的項目。如果您只是想讓用戶在窗口上重新定位控件,那是一種不同的操作。 – 2013-03-03 20:18:24

+0

是的,這是正確的。我想把一個控件從窗口上的一個位置移動到另一個位置。不管它來自哪裏。我不想拖動列表項(但我確實想要拖動整個ListView控件) – Tommy 2013-03-03 20:20:38

+0

我在WPF中感到困惑,因爲在WinForms中,我們只需處理MouseDown,MouseMove和MouseUp事件以用於我們想要的控件在運行時移動,但很多控件在WPF中沒有這些事件 – Tommy 2013-03-03 20:22:19

回答

1

你在問題中描述的內容和澄清的評論更多地是關於重新定位元素而不是拖放。

這種類型的活動在WPF中相當容易,唯一的考慮因素是佈局面板包含元素。因爲WPF試圖提供更多佈局周圍的結構(使用Grids,StackPanels等),您需要一個允許自由格式定位元素的面板。這需要Canvas

所以,如果你有與它元素Canvas(定位與Canvas.LeftCanvas.Top爲例),你可以使用MouseDownMouseMoveMouseUp允許用戶拖動/重新定位在畫布元素。