UWP Fit 可缩放图像在其容器中

UWP Fit zoomable image in its container

为了使图像可缩放,我使用像这样的 ScrollViewer 包装图像控件:

<Page ...>
    <ScrollViewer ZoomMode="Enabled" HorizontalScrollMode="Auto" VerticalScrollMode="Auto">
        <Image Source="http://i.imgur.com/iseJWq1.jpg" />
    </ScrollViewer>
</Page>

我希望调整图像大小以在水平和垂直方向上都适合页面,就像 Image 控件的 Stretch="Uniform" 行为一样:

但它会调整图像大小以使其仅在水平方向上适合,剪掉垂直方向上多余的图像:

我从 this website 开始有了一些领先优势,所以我将 xaml 更改为:

<Page x:Name="Page"
... />
    <ScrollViewer ZoomMode="Enabled" HorizontalScrollMode="Auto" VerticalScrollMode="Auto">
        <Image Source="http://i.imgur.com/iseJWq1.jpg" Width="{Binding ActualWidth, ElementName=Page}" Height="{Binding ActualHeight, ElementName=Page}" />
    </ScrollViewer>
</Page>

虽然这在事物的拉伸方面效果很好,但图像随后会与屏幕左侧对齐,当您缩放时会发生奇怪的事情 in/out:

使用图像的 Stretch 属性无效。

然后如何在最初将图像放入其容器内时使图像可缩放,就像任何照片查看器应用程序一样?

这个有效:

<Page x:Name="Page"     ...>
    <ScrollViewer ZoomMode="Enabled" MinZoomFactor="1" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
        <Image Source="http://i.imgur.com/iseJWq1.jpg" MaxWidth="{Binding ActualWidth, ElementName=Page}" MaxHeight="{Binding ActualHeight, ElementName=Page}"/>
    </ScrollViewer>
</Page>

...这正是文章推荐的做法。