В настройках WPF e.Effects в DragOver не работает - почему? - PullRequest
3 голосов
/ 22 июня 2011

Я новичок в WPF. Я реализую Drag & Drop в TreeView, и мой обработчик событий DragOver не работает.

<Style TargetType="TreeViewItem">
    <!-- ... -->
    <EventSetter Event="DragOver" Handler="item_DragOver" />
</Style>
void item_DragOver(object sender, DragEventArgs e)
{
    if (!e.Data.GetDataPresent("someFormat") || e.Source == sender)
        e.Effects = DragDropEffects.None;                
    else if (e.KeyStates == DragDropKeyStates.ControlKey)
        e.Effects = DragDropEffects.Copy;
    else
        e.Effects = DragDropEffects.Move;

    e.Handled = true;
}

Когда программа запускается при перетаскивании по некоторым элементам дерева, она всегда показывает значок перетаскивания, даже если я нажимаю клавишу Ctrl. Я предполагаю, что какой-то обработчик событий по умолчанию переопределяет мои e.Effects, но я не знаю, где я могу его найти.

Есть идеи?

1 Ответ

1 голос
/ 29 июня 2011

Я нашел это, чтобы проверить, правильно ли нажата ctrl-клавиша:

if ((e.KeyStates & DragDropKeyStates.ControlKey) == DragDropKeyStates.ControlKey)
...