WPF Mouse.Capture вызывает зависание окна - PullRequest
1 голос
/ 22 марта 2011

У меня есть диаграмма WPF, и я создаю скользящее окно для перетаскивания на диаграмме. По сути, я следую последовательности MouseDown-MouseMove-MouseUp, чтобы отслеживать движения скользящего окна. Я хочу управлять случаями, когда MouseMove / MouseUp после MouseDown происходит вне области диаграммы. Для этого я делаю Mouse.Capture(Chart) на MouseDown и освобождаю захват на MouseUp. Но всякий раз, когда происходит MouseDown, мое окно зависает. Что я делаю неправильно?

Ответы [ 3 ]

3 голосов
/ 22 марта 2011

Попробуйте использовать это:

Mouse.Capture (Chart, CaptureMode.SubTree)
0 голосов
/ 30 ноября 2017

У меня была такая же проблема. Проблема для меня заключалась в том, что захват мыши по какой-то причине сразу вызывает событие MouseMove, и я получал сбой, потому что мое событие перемещения мыши ожидало создания прямоугольника в MouseDown. Конечно, это было все еще ноль.

Итак, стек выглядит так:

MouseDown 
  MouseCapture 
    MouseMove
then returns to where it left off in MouseDown
0 голосов
/ 11 февраля 2014

Может быть, вы обрабатываете события мыши не из Window или UserControl или другого UIElement, а по конкретному элементу, который не наследуется от UIElement?Вам нужно использовать

<UserControl x:Class="...
          MouseDown="HandleMouseDown" 
          .../>

вместо

<ListBox x:Name="...
            MouseDown="HandleMouseDown"
           .../>

Собственно, окно зависло полностью или просто не реагирует на щелчки мышью (бот делает на клавиатуре)?

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