WPF之快速實現拖拽功能

場景:工具欄上有不少圖標(一個圖標表明一種控件),能夠左鍵按下圖標,而後拖拽到設計區域建立一個個的控件。工具

實現:1.給工具欄上的圖標添加MouseLeftDown和MouseMove事件,前者事件是爲了告訴Move事件個人確按下了左鍵,同時也能夠在MouseDown事件中初始化一些標識;在後者       中通過本身的邏輯判斷,看看是否能夠拖拽了(通常就是判斷本身的標識,好比是否按下了左鍵,這樣的判斷),若是能夠則加入以下代碼:spa

    DragDrop.DoDragDrop(sourceControl, data, DragDropEffects.Copy);

   第一個參數就是進行拖拽的控件,第二個參數就是經過拖拽傳遞的數據(object類型,想怎麼傳就怎麼傳),第三個就是一個拖拽特效,具體的值查看MSDN。設計

  2.給目標區域添加Drop事件和DropEnter事件,第一個事件中就是處理拖拽後要幹嗎,也就是鬆開鼠標左鍵的一瞬間作的事件;第二個事件呢,就是拖拽狀態進入目標區域並    且沒有釋放以前執行的操做,也就是說能夠在Enter事件中進行一些操做或處理,使當前的操做達到能夠拖拽的條件。code

  DragEventArgs.Data.GetData(typeof(T));

也就是在Drop或者DropEnter中能夠經過拖拽事件參數獲得拖拽時候傳遞的數據,也就是步驟1中的第二個參數,經過GetData能夠獲得執行類型的數據(多是沒有的哦,由於你要和你傳遞時候的類型匹配才行的哦),而後你就能夠作你想作的事情了。blog

 

好了,這個也就這麼多東西,具體的應用你們多思考、多看看MSDN吧。事件

相關文章
相關標籤/搜索