2013-08-28 2 views
0

У меня есть ScatterViewItem в Scatterview, манипуляции которого не обрабатываются мной. У меня также есть RichTextBox в ScatterView с свойством AllowDrop = True.DragDropEffect.Copy Сбрасывает себя на Нет

По умолчанию событие RichTextBox DragEnter срабатывает всякий раз, когда ScatterViewItem перетаскивается в него, что является правильным. Я проверил DragDropEffect здесь, и это DragDropEffect.Move. Событие Drop срабатывает соответственно после этого.

Я изменил DragDropEffect от Move до Copy в DragEnter, но событие Drop больше не срабатывает. Я снова проверил DragDropEffect в DragOver, и это как-то стало None. Я попытался установить его в DragOver на Copy (снова), но каждый раз он просто станет None сам по себе на следующем триггере DragOver.

Единственный раз, когда событие Drop будет срабатывать, если значение DragDropEffect установлено равным All или Move. Как мне изменить его на DragDropEffect.Copy и по-прежнему запускать событие Drop? Я установил e.Handled = true после настройки DragDropEffect.Copy.

EDIT: Извиняюсь, я немного манипулировал перетаскиванием svi. В ScatterView OnManipulationStarted, я получаю svi и называется svi.BeginDragDrop(svi.DataContext). Это все, что я сделал с СВИ.

ответ

0

Что такое (DragEventArgs).AllowedEffects недвижимость? Вы можете установить свойство (DragEventArgs).Effects в одно из значений, заданных свойством (DragEventArgs).AllowedEffects. Если DragDropEffects.Copy не является опцией в enumeration (DragEventArgs).AllowedEffects, то вы будете не сможете использовать эту функцию.

Вы можете установить эту опцию при создании объекта данных и вызвать DoDragDrop:

DragDrop.DoDragDrop(item, dragData, DragDropEffects.All); 

UPDATE >>>

Как я уже говорил, обычно, установить допустимый DragDropEffects перечисление при вызове DoDragDrop ... увидев, что вы вызвали метод SurfaceDragCursor.BeginDragDrop, я посмотрел онлайн на странице SurfaceDragDrop.BeginDragDrop Method в MSDN и нашел следующее:

public static SurfaceDragCursor BeginDragDrop (
    FrameworkElement dragSource, 
    FrameworkElement draggedElement, 
    FrameworkElement cursorVisual, 
    Object data, 
    IEnumerable<InputDevice> inputDevices, 
    DragDropEffects allowedEffects 
) 

Я предполагаю, что последний параметр здесь - это то, где вы задаете допустимую нумерацию эффектов DragDropEffects.

+0

Хммм вы смешивали 'Эффекты' и' Разрешенные эффекты'? Я не могу узнать, что такое AllowedEffects, нет такого свойства в 'DragEventArgs' в' DragEnter'. Я не называл 'DragDrop.DoDragDrop', я называл' svi.BeginDragDrop' вместо этого, который создает 'SurfaceDragCursor'. Я перешел на «DragDrop.DoDragDrop», и «DragEnter» даже не запускается. Простите меня, но мои знания об элементах Drag and Dropping по-прежнему очень слабы ... –

+0

в 'DragEnter', я проверил' (SurfaceDragDropEventArgs) .Cursor.AllowedEffects' и это 'Move'. –

+0

Да, я * сделал * перепутал их ... спасибо, что указал ... Я обновил свой ответ сейчас. Кроме того, если ваш 'AllowedEffects' только говорит' Move', вы можете перемещаться и не копировать. – Sheridan

Смежные вопросы