Событие mouseWheel ScrollViewer будет стрелять только, когда полоса прокрутки будет в конце, он - дорожка (или вершина или нижняя часть / левый или правый). Событие mouseWheel не стреляет, когда это где угодно промежуточно.
У кого-либо есть какая-либо подсказка относительно того, как получить прокрутку, когда она вызывается колесом мыши?
Вам необходимо добавить следующий код, чтобы зафиксировать событие прокрутки
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
}
Чтобы на самом деле полноценная прокрутка работала должным образом (без вмешательства в события колеса мыши), см. мой ответ на этот вопрос - Как я могу заставить колесо мыши правильно работать с Silverlight 4 ScrollViewer
Средство просмотра прокрутки действительно запускает событие. Событие обрабатывается, поэтому обработчик не будет вызван. Чтобы обойти эту проблему, используйте метод 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);
@ 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);