WPF實現Drag Drop操作

2021-07-27 18:27:49 字數 1634 閱讀 4689

有時候我們方便使用者操作,總會把一下copy/paste 或者 input操作轉換為drag/drop, wpf 跟之前winform 一樣提供了一些實現方式方便開發人員進行開發。

要允許控制項drop操作,首先必須設定控制項屬性allowdrop,這樣控制項才能產生dragover/dragenter/drop等相關事件,從而開發人員可以做一些邏輯判斷,設定drageventargs 的屬性effects 決定drag的內容是否允許drop. 下面是乙個簡單的例子:

建立兩個listbox, 乙個裡面有內容(名字為:employeesource),另外乙個(名字:selectedemployees)沒有內容,允許使用者從employeesource 拖拽內容到selectedemployees。

1. 在xaml中建立這兩個listbox, 並進行相關資料繫結

2. 在cs檔案中實現相關事件函式

bool bmousedown = true;

private void employeesource_mousemove(object sender, system.windows.input.mouseeventargs e)

dragdrop.dodragdrop(employeesource, selected, dragdropeffects.copy);

}private void selectedemployees_drop(object sender, system.windows.drageventargs e)

}private void selectedemployees_dragover(object sender, system.windows.drageventargs e)

dragelement = ems[0];

e.effects = dragdropeffects.copy;

}

3. 增加datacontext(viewmodel), 設定繫結的屬性

public class employeelist : inotifypropertychanged

}public employeelist()

catch

}private employees _employees = new employees();

public employees employees

}} public class employeesitem : inotifypropertychanged

}

public override bool equals(object obj)

private string _description = string.empty;

public string description

set}

} }public class employees : system.collections.objectmodel.observablecollection

用 QT實現拖放(drag drop)功能

qt的 qdrag 和 qdrop功能在qt的 puzzle 示例中有介紹。但是那個介紹是以qlistwidget為基礎的。本文以qwidget為基礎,介紹如何實現拖放。拖放可以用qstring作為資訊載體,也可以使用html等型別。本文採用qbytearray。qbytearray允許程式設計師使...

WPF 實現縮放移動

熟悉wpf 的朋友應該知道canvas 預設是不支援scale 和offset 操作的,如果我們想對canvas 裡包含的控制項進行整體縮放或移動可能會比較麻煩。kael rowan 提供了zoomablecanvas 類可以方便實現上述效果。我們可以在xaml 中直接使用對控制項布局進行開發,而不...

WPF實現控制項拖動

實現控制項拖動的基本原理是對滑鼠位置的捕獲,同時根據滑鼠按鍵的按下 釋放確定控制項移動的幅度和時機。簡單示例 在grid中有乙個button,通過滑鼠事件改編button的margin屬性,從而改變button在grid中的相對位置。gd 90 height 30 name btn button 為...