Предотвращение или захват прокрутки MouseWheel в DataGrid - PullRequest
0 голосов
/ 20 февраля 2011

Я пытаюсь зафиксировать событие колесика мыши на сетке данных Silverlight 4.Проблема заключается в том, что всякий раз, когда событие mousewheel обрабатывается DataGrid, событие MouseWheel не запускается.Но когда DataGrid находится вверху, и я пытаюсь прокрутить вверх, я получаю событие MouseWheel и то же самое внизу - то есть событие запускается, когда DataGrid не обрабатывает само событие MouseWheel.

Iтакже пытался захватить событие mousewheel на вертикальной полосе прокрутки (сетка данных Silverlight не использует ScrollViewer)

  1. Как я могу предотвратить прокрутку?
  2. Если я не сделаюпредотвратить прокрутку - как я могу захватить событие во всех сценариях?
  3. Могу ли я захватить события MouseWheel, даже если я еще не сфокусировал DataGrid (событие не срабатывает, а прокрутка не работаетперед фокусировкой DataGrid)?Или я должен использовать следующие события:

    HtmlPage.Window.AttachEvent ("DOMMouseScroll", OnMouseWheel);HtmlPage.Window.AttachEvent ("onmousewheel", OnMouseWheel);HtmlPage.Document.AttachEvent ("onmousewheel", OnMouseWheel);

Любая помощь приветствуется.Спасибо.

1 Ответ

1 голос
/ 20 февраля 2011

для предотвращения прокрутки вы можете получить из DataGrid и переопределить OnMouseWheel.

public class MyDataGrid :DataGrid
    {
        protected override void OnMouseWheel(MouseWheelEventArgs e)
        {
            e.Handled = true;
        }
    }

Если вы хотите получить ВСЕ события в UIElement, вы можете сделать это с помощью метода AddHandler, где вы можете установить флаг вполучить даже обработанные события.Вот пример:

protected override void OnMouseWheel(MouseWheelEventArgs e)
        {
            Application.Current.RootVisual.AddHandler(MouseWheelEvent, new MouseWheelEventHandler(MyHandler), true);
            e.Handled = true;
        }

        void MyHandler(object sender, MouseWheelEventArgs args)
        {

        }

Надеюсь, это поможет.

BR,

TJ

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