Xaml 在ScrollViewer中捕获画布的指针移动事件

Xaml 在ScrollViewer中捕获画布的指针移动事件,xaml,windows-8,microsoft-metro,windows-8.1,Xaml,Windows 8,Microsoft Metro,Windows 8.1,我有一个Canvas,它覆盖PointerMoved事件,如果用户在其上“绘制”,则执行一些操作。现在我正试图将这个画布移动到滚动查看器中,以添加效果完美的缩放和滚动效果 <ScrollViewer x:Name="MainScrollViewer" Grid.Column="1" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto"

我有一个
Canvas
,它覆盖
PointerMoved
事件,如果用户在其上“绘制”,则执行一些操作。现在我正试图将这个
画布
移动到
滚动查看器
中,以添加效果完美的缩放和滚动效果

    <ScrollViewer x:Name="MainScrollViewer" Grid.Column="1"
                  VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" 
                  ZoomMode="Enabled" MinZoomFactor="0.5" MaxZoomFactor="2.0" >
        <Canvas x:Name="MainCanvas" Background="#000000" 
                HorizontalAlignment="Left" VerticalAlignment="Top" 
                PointerMoved="MainCanvas_PointerMoved" />
    </ScrollViewer>

但是,
ScrollViewer
捕获所有指针移动事件,这导致主绘制过程不再工作

你知道怎么解决这个问题吗

在仍然允许缩放/平移的情况下使用触摸绘图-这在XAML中目前不受支持。您需要关闭缩放/平移,以便能够使用指针事件进行绘制,并且不可能通过自定义操作同时获得系统缩放和平移行为。但是,您可以尝试通过设置ManipulationMode=All来使用操纵事件,并使用Scale和Translate值手动处理双指滚动和收缩缩放

更多信息,请访问:


我没有使用canvas和scrollview,但我认为我找到的将对您有所帮助:)

有一个窍门!您可以添加工具按钮(如手动)在两种情况下进行切换

  • 启用绘图的第一个条件:您可以禁用ScrollViewer的HorizontalScrollMode和VerticalScrollMode,这使您能够使用画布的指针事件
  • 在第二个选项中,您应该为ScrollViewer启用HorizontalScrollMode和VerticalScrollMode,它可以工作 要以编程方式更改ScrollViewer属性,请执行以下操作:

     MainScrollViewer.HorizontalScrollMode = ScrollMode.Auto;
     MainScrollViewer.VerticalScrollMode = ScrollMode.Auto;
     MainScrollViewer.ZoomMode = ZoomMode.Enabled;
    

    尝试将VerticalScrollBarVisibility和HorizontalScrollBarVisibility设置为Disabled?具有滚动和缩放功能是我首先添加
    ScrollViewer
    的原因:)我的意思是,如果设置为禁用,缩放仍然有效,指针移动不起作用?