如何在DragSource中确定Drop事件

时间:2010-11-24 10:34:39

标签: c# wpf drag-and-drop

我有一个包含一些文本值的列表框

<ListBox x:Name="DragSource" PreviewMouseMove="DragSource_OnPreviewMouseMove" SelectedValuePath="Content">
  <ListBoxItem>first</ListBoxItem>
  <ListBoxItem>second</ListBoxItem>
 </ListBox>

和事件处理程序

private void DragSource_OnPreviewMouseMove(object sender, MouseEventArgs e)
{
 if (e.LeftButton == MouseButtonState.Pressed && DragSource.SelectedItem != null)
 {
  var data = new DataObject(DataFormats.Serializable, DragSource.SelectedItem);
  var value = (string)DragSource.SelectedValue;
  data.SetData(DataFormats.Text, value);
  var de = DragDrop.DoDragDrop(DragSource, data, DragDropEffects.All);
 }
}

可以将项目删除到我的其他ListBox或其他应用程序,如Word或Excel。我如何检测到文本被删除(例如在Word中)并删除ListBoxItem如果DragDrop效果是“移动”?

1 个答案:

答案 0 :(得分:2)

没有第三方应用会告诉您它移动了您的ListBoxItem。充其量它将使用文本表示并告诉您复制。获取移动需要一个drop target,它可以在DragEnter事件处理程序中识别您的对象,并决定它可以对其负责。只有你可以编写这样的事件处理程序。