Как определить событие Drop в DragSource - PullRequest
1 голос
/ 24 ноября 2010

У меня есть список, содержащий некоторые текстовые значения

<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 имеет значение «Move»?

1 Ответ

2 голосов
/ 24 ноября 2010

Никакое стороннее приложение не скажет вам, что оно переместило ваш ListBoxItem.В лучшем случае он будет использовать текстовое представление и сообщит вам, что он скопирован.Чтобы получить движение, необходимо удалить цель, которая может распознать ваш объект в его обработчике событий DragEnter и решить, что он может взять на себя ответственность за него.Только вы могли написать такой обработчик событий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...