在WPF中的ScrollViewer中禁用鼠标滚轮滚动

8
在xaml代码中
<StackPanel>
 <ScrollViewer>
  <local:CustomCanvas>
  </local:CustomCanvas>
 </ScrollViewer>
</StackPanel>

CustomCanvas具有缩放功能。但是当我在CustomCanvas区域旋转鼠标滚轮时,ScrollViewer的滚动条会起作用,而缩放不起作用。当我滚动ScrollViewer的滚动条时,不仅CustomCanvas的缩放起作用,而且ScrollViewer的滚动也正常工作。
当我旋转鼠标滚轮时,我只想要缩放。当我滚动滚动条时,我只想要滚动。
我该如何防止ScrollViewer的鼠标滚轮事件旋转鼠标滚轮? 我该如何防止ScrollViewer的滚动条滚动缩放CustomCanvas? 请帮忙。
1个回答

7
你可以处理自定义画布的鼠标滚轮事件,这样当鼠标指向你的画布区域且发生滚动事件时,你可以将MouseWheelEventArgs的Handled属性设置为true:
 private void UIElement_OnMouseWheel(object sender, MouseWheelEventArgs e)
    {
        e.Handled = true;
        //handler your zoomIn/Out here
    }

在Xaml中

<StackPanel>
 <ScrollViewer>
  <local:CustomCanvas  MouseWheel="UIElement_OnMouseWheel">
  </local:CustomCanvas>
 </ScrollViewer>
</StackPanel>

谢谢。我已经这样做了。在CustomCanvas中有子Image和TextBlock。只有当我在CustomCanvas的子元素上旋转鼠标滚轮时,它才会起作用... 为什么除了子区域之外,其他CustomCanvas区域都不会触发MouseWheel事件?在其他区域,滚动事件会触发ScrollViewer,使滚动工作。 - Lightstar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接