wpf中实现拖放功能和winform中实现的功能有所差异,步骤简述如下:
1.目标控件需要设置AllowDrop=‘True’;
2.目标控件需要注册Drop事件,在该事件中,将拖动到该控件中的数据进行处理,获取数据可使用e.Data.GetData(typeof(MyClass));
3.源控件注册MouseMove事件,在该事件中,启动拖拽行为:DragDrop.DoDragDrop.
代码示例:
private void coilTreeView_MouseMove(object sender, MouseEventArgs e)
{
if (sender is TreeView treeView && e.LeftButton == MouseButtonState.Pressed && coilTreeView.SelectedItem != null)
{
DragDrop.DoDragDrop(coilTreeView, coilTreeView.SelectedItem, DragDropEffects.Move);
}
}
private void Grid_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetData(typeof(MyModel)) is MyModel)
{
e.Effects = DragDropEffects.Copy;
}
}
private void Label_Drop(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(typeof(MyModel)))
{
Label lb = sender as Label;
var data = (MyModel)e.Data.GetData(typeof(MyModel));
lb.Content = data.....;//获取需要数据
}
}