我有一个自定义的水平ListView,它的模板(使用Blend创建)中带有自定义的ScrollViewer。使用鼠标滚轮时,我希望它水平滚动。
我怎样才能做到这一点?

最佳答案

如果实现IScrollInfo,则可以覆盖MouseWheelUp以执行MouseWheelLeft
以相同方式上下\右

编辑(简单得多):

添加到您的ScrollViewer PreviewMouseWheel

private void ScrollViewer_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
        {
            if (e.Delta < 0) // wheel down
            {
                if (myScrollViewer.HorizontalOffset + e.Delta > 0)
                {
                    myScrollViewer.ScrollToHorizontalOffset(myScrollViewer.HorizontalOffset + e.Delta);
                }
                else
                {
                    myScrollViewer.ScrollToLeftEnd();
                }
            }
            else //wheel up
            {
                if (myScrollViewer.ExtentWidth > myScrollViewer.HorizontalOffset + e.Delta)
                {
                    myScrollViewer.ScrollToHorizontalOffset(myScrollViewer.HorizontalOffset + e.Delta);
                }
                else
                {
                    myScrollViewer.ScrollToRightEnd();
                }
            }

        }


xaml:

<ScrollViewer x:Name="myScrollViewer" HorizontalScrollBarVisibility="Visible" Mouse.PreviewMouseWheel="ScrollViewer_PreviewMouseWheel">

10-08 16:49