WPF-эквивалент события Control.CursorChanged - PullRequest
0 голосов
/ 02 сентября 2011

Я пытаюсь изменить курсор мыши в определенный момент, когда я перетаскиваю мышь в просмотре списка wpf. Однако, когда я настраиваю свою мышь, она быстро переопределяется чем-то другим и возвращается обратно к курсору перетаскивания.

Я не уверен, откуда происходит изменение курсора, это, конечно, не из моего кода, поэтому он должен быть системным. Если это система, то я должен перехватить событие для изменения курсора и обработать событие, чтобы курсор показал то, что я хочу, верно?

Так есть ли WPF-эквивалент этого события Control.CursorChanged? Или, возможно, есть другой способ решения этой проблемы?

Edit:

вот часть моего кода

    private void SetDragCursor()
    {
        if (_badDragLoc)
        {
            Mouse.OverrideCursor = Cursors.No;
        }
        else
        {
            Mouse.OverrideCursor = Cursors.Arrow;
        }
    }
    private void listView_DragOver(object sender, DragEventArgs e)
    {
        if (at a bad drag location)
        {
            _badDragLoc = true;
            SetDragCursor();
        }
    }

У меня также есть обработчик события отпускания, в котором у меня также есть метод SetDragCursor (). Когда я пошагово перебираю каждую строку кода в отладчике, мышь превращается в курсор перетаскивания из курсора без курсора сразу после того, как он входит в обработчик перетаскивания. Вот почему я думаю, что это должна быть система.

Если это действительно система, то, если я смогу зафиксировать срабатывание события, я сам смогу обработать это событие и не дать ему всплыть.

Спасибо!

1 Ответ

1 голос
/ 02 сентября 2011

Просто так не работает, способ установить курсор во время события DragOver следующий:

void listView__DragOver(object sender, DragEventArgs e)
     {
         if (!e.Data.GetDataPresent("Images"))
         {
             e.Effects = DragDropEffects.None;
             e.Handled = true;
         }
     }

в зависимости от значения перечисления DragDropEffects, которое вы назначаете для e.Effects, мышь изменитсякурсор.

не вызывайте Mouse.OverrideCursor, потому что это не правильный путь.

...