ScrollViewer 中的光学缩放具有奇怪的平移行为

Optical zoom in ScrollViewer having odd panning behavior

我正在构建一个图片查看应用程序。我在其中有一个显示单个图像的 FlipView,您可以在其中对每个图像进行光学缩放。这种体验与您在 windows 8(使用 html 构建)的默认照片应用中看到的 FlipView/Optical 缩放非常相似。

我正在使用 ScrollViewer 进行光学变焦。光学变焦似乎工作正常,除了有一个奇怪的平移行为。在图像返回到原始位置之前,您仍然可以用一根手指左右摇动图像。

照片应用不允许这样做,我正在尝试实现类似的行为。有什么方法可以使用内置的 ScrollViewer 控件禁用平移图像吗?我仍然想放大工作,但应该禁用平移。我认为这应该可以使用操作事件而不是 ScrollViewer 来实现,但显然 ScrollViewer 会更简单。

<ScrollViewer x:Name="scrollViewer1" ZoomMode="Enabled" MaxZoomFactor="2.0" MinZoomFactor="1.0" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" HorizontalAlignment="Center">
        <FlipView x:Name="flipView1" Width="1140" SelectionChanged="flipView1_SelectionChanged">
            <FlipView.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <Image x:Name="CurrentImage" Source="{Binding}" DoubleTapped="CurrentImage_DoubleTapped">                                
                        </Image>
                    </Grid>
                </DataTemplate>
            </FlipView.ItemTemplate>
        </FlipView>
    </ScrollViewer

您已将 FlipView 添加到 ScrollView,因为您必须将 scrollview 添加到 flipview 项目模板,并且图像必须在 scrollview 内,您的 xaml 代码必须是这样的:

<FlipView x:Name="flipView1" Width="1140" SelectionChanged="flipView1_SelectionChanged">
            <FlipView.ItemTemplate>
                <DataTemplate>
                    <Grid>
                       <ScrollViewer x:Name="scrollViewer1" ZoomMode="Enabled" MaxZoomFactor="2.0" MinZoomFactor="1.0" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" HorizontalAlignment="Center">
                        <Image x:Name="CurrentImage" Source="{Binding}" DoubleTapped="CurrentImage_DoubleTapped">                                
                        </Image>
                      </ScrollViewer>
                    </Grid>
                </DataTemplate>
            </FlipView.ItemTemplate>
        </FlipView>