ScrollViewer не запускает Событие mouseWheel в то время как Прокрутка

Событие mouseWheel ScrollViewer будет стрелять только, когда полоса прокрутки будет в конце, он - дорожка (или вершина или нижняя часть / левый или правый). Событие mouseWheel не стреляет, когда это где угодно промежуточно.

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

1
задан beaudetious 4 June 2010 в 17:46
поделиться

3 ответа

Вам необходимо добавить следующий код, чтобы зафиксировать событие прокрутки

public MainPage()
     {
      InitializeComponent();
      HtmlPage.Window.AttachEvent("DOMMouseScroll", OnMouseWheel);
      HtmlPage.Window.AttachEvent("onmousewheel", OnMouseWheel);
      HtmlPage.Document.AttachEvent("onmousewheel", OnMouseWheel);
      }

private void OnMouseWheel(object sender, HtmlEventArgs args)
      {
      // Your code goes here
      }

Ссылка: http://blog.thekieners.com/2009/04/06/how-to- enable-mouse-wheel-scrolling-in-silverlight-without-extends-controls /

Чтобы на самом деле полноценная прокрутка работала должным образом (без вмешательства в события колеса мыши), см. мой ответ на этот вопрос - Как я могу заставить колесо мыши правильно работать с Silverlight 4 ScrollViewer

1
ответ дан 3 September 2019 в 00:03
поделиться

Средство просмотра прокрутки действительно запускает событие. Событие обрабатывается, поэтому обработчик не будет вызван. Чтобы обойти эту проблему, используйте метод AddHandler для добавления обработчика.

Вместо того чтобы использовать событие UIElement.MouseWheel Event, используйте UIElement. AddHandler, вот так:

MyScrollViewer.AddHandler(FrameworkElement.MouseWheelEvent,
    delegate(object sender, MouseWheelEventArgs e)
    {
        //if e.Handled == true then the page was actually scrolled,
        // otherwise, the scrollviewer is either at the beginning or at the end
        if (e.Handled == true)
        {
            //Here, you can do what you need
        }
    },
true);
1
ответ дан 3 September 2019 в 00:03
поделиться

@ davidle1234:

    public delegate void SVMouseWheelDelegate(object sender, MouseWheelEventArgs e);
    public SVMouseWheelDelegate SVMouseWheelHandler { get; set; }

    private void SVMouseWheelHandlerLogic(object sender, MouseWheelEventArgs e)
    {
        //if e.Handled == true then the page was actually scrolled,
        // otherwise, the scrollviewer is either at the beginning or at the end
        if (e.Handled == true)
        {
            //Here, you can do what you need
        }
    }

и используйте его так:

MyScrollViewer.AddHandler(FrameworkElement.MouseWheelEvent, SVMouseWheelHandler, true);
0
ответ дан 3 September 2019 в 00:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: