我希望有人有一个提示/解决方案,以更好,更高性能的方式解决这个问题。冒泡/重定向事件到父ScrollViewer
我正在写一个Windows UWP应用程序,其中包含一个带网格的ScrollViewer。在这个网格中,我有两个嵌入在ScrollViewer中的StackPanels。
每个StackPanel都有一个垂直方向的图像列表。 StackPanel与所有图像在一起的高度一样,因此没有垂直滚动条,因为它应该是。 另一方面,图像更宽,然后显示StackPanel和水平滚动条。我可以用鼠标在水平方向上滚动StackPanels。这工作完美。
但是,如果我用鼠标在一个StackPanel上,我不能使用鼠标滚轮在垂直方向上滚动周围的ScrollViewer。 StackPanels周围的ScrollViewer将使用MouseWheel事件,并且不会冒泡到父ScrollViewer。
有人知道我可以如何冒泡/将MouseWheel事件重定向到父ScrollViewer吗?
我发现了一个不太好的解决方法。我已经添加了自己的UIElement.PointerWheelChangedEvent处理器和移动外的ScrollViewer我自己,像这样:
LeftScrollViewer.AddHandler(UIElement.PointerWheelChangedEvent, new PointerEventHandler(OnVerticalScrollEventHandled), true);
private void OnVerticalScrollEventHandled(object sender, PointerRoutedEventArgs e)
{
ScrollViewPages.ChangeView(ScrollViewPages.HorizontalOffset, ScrollViewPages.VerticalOffset + (-1 * e.GetCurrentPoint(null).Properties.MouseWheelDelta), 1);
}
这工作,但不是在一个快速流畅的方式。有人有更好的解决方案吗?
你是说当你将鼠标悬停在ScrollViewer的空白区域,它不滚动?悬停在图像上时它会滚动吗? – Laith
没有其他的方式。如果我在ScrollViewer中的空白区域滚动。如果我在图片上,它不会滚动。 – StefanH
尝试设置e.Handled = false;如果你想让父母滚动。 – Hannes