колесо предварительного просмотра не поднимается, когда мышь не находится на контроле в wpf - PullRequest
1 голос
/ 07 ноября 2011

Я обработал событие previewmousewheel элемента управления Combobox.Когда моя мышь находится на элементе управления, и я перемещаю центральное колесо мыши, это событие вызывается.Но когда моя мышь находится вне контроля и я перемещаю центральное колесо мыши, это событие не вызывается.

Кто-нибудь может объяснить, почему это происходит?

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

Ответы [ 2 ]

2 голосов
/ 07 ноября 2011

Это ожидаемое поведение.

Если курсор мыши не расположен над элементом управления, то через него никакие события мыши не направляются.Вы не ожидаете, что событие щелчка мыши будет перенаправлено через него, если курсор был над другим элементом управления, не так ли?

Если вы хотите такое поведение, то я бы предложил вам обработать событие mousewheel на страницепросмотрите его и направьте оттуда, но будьте осторожны, поскольку пользователь ожидает, что события мыши и клавиатуры будут обрабатываться в фокусе.

0 голосов
/ 07 ноября 2011

В тех случаях, когда пользователь ожидает, что событие будет перенаправлено в элемент управления, вы можете использовать Mouse.Capture(someControl) и Mouse.Capture(null), чтобы остановить пересылку.

Вы должны использовать это только тогда, когда это имеет смысл.Например, при перетаскивании полосы прокрутки, когда вы начали перетаскивать большой палец, но не обязаны оставаться на нем, пока вы удерживаете левую кнопку мыши нажатой.

При использовании Mouse.Capture() убедитесь, что вы всегдапредоставить путь назад от захвата.

...