我有一个包含一些文本值的列表框
<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效果是“移动”?
答案 0 :(得分:2)
没有第三方应用会告诉您它移动了您的ListBoxItem。充其量它将使用文本表示并告诉您复制。获取移动需要一个drop target,它可以在DragEnter事件处理程序中识别您的对象,并决定它可以对其负责。只有你可以编写这样的事件处理程序。