冒泡 /重定向事件到家长scrollviewer



我希望有人有提示/解决方案以更好,更性能的方式解决此问题。

我正在使用带有网格的滚动浏览器编写Windows UWP应用程序。在此网格中,我有两个嵌入式式堆栈中的sclollviewer。

每个Stackpanel都有垂直方向的图像列表。堆叠式的高度与所有图像在一起,因此没有应有的垂直滚动条。另一方面,图像较宽,然后显示了stackpanel和水平滚动栏。我可以用鼠标沿水平方向滚动堆栈。这很好。

但是,如果我用鼠标在堆叠式板上,我将无法将鼠标沿垂直方向滚动周围的滚动浏览器滚动。Stackpanels周围的ScrollViewer将消耗鼠标轮毂事件,并且不会将其冒泡到Parent Scrollviewer。

有人知道我如何将鼠标轮事件冒泡/重定向到父scrollviewer?

我发现这不是那么好的解决方法。我添加了一个自己的uielement.pointerwheelchangedevent处理程序,然后自行移动外部滚动浏览器:

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);
}

这起作用,但不能以快速而流畅的方式工作。有人有更好的解决方案吗?

用于从孩子到父母的事件,为事件添加自己的处理程序,然后将处理的属性设置为false。

LeftScrollViewer.AddHandler(UIElement.PointerWheelChangedEvent, new PointerEventHandler(OnVerticalScrollEventHandled), true);
private void OnVerticalScrollEventHandled(object sender, PointerRoutedEventArgs e)
{
    e.Handled = false;
}

最新更新