windows运行时-在ScrollViewer中XAML将图像调整为页面大小



我在ScrollViewer中有一个Image。有些图像太大,无法放入Page中。首次显示时,如何将Image的大小缩小到Page的大小?

<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
    <Image Stretch="None" />
</ScrollViewer>

更新的答案

这是我根据Filip在这里的回答所做的,另一个他在这里回答了类似的问题

XAML:

<ScrollViewer x:Name="scrollViewer">
    <Image x:Name="image" Stretch="None" SizeChanged="ImageSizeChanged" />
</ScrollViewer>

代码背后:

private bool imageSizeSet;
private void ImageSizeChanged( object sender, SizeChangedEventArgs e )
{
    if( imageSizeSet || !( image.ActualWidth > scrollViewer.ViewportWidth ) && !( image.ActualHeight > scrollViewer.ViewportHeight ) )
    {
        return;
    }
    // If the image is larger than the screen, zoom it out.
    var zoomFactor = (float)Math.Min( scrollViewer.ViewportWidth / image.ActualWidth, scrollViewer.ViewportHeight / image.ActualHeight );
    scrollViewer.ZoomToFactor( zoomFactor );
    imageSizeSet = true;
}
<ScrollViewer
    x:Name="theScrollViewer"
    HorizontalScrollBarVisibility="Auto"
    VerticalScrollBarVisibility="Auto"
    SizeChanged="OnSizeChanged">
    <Image
        x:Name="theImage"
        Stretch="Uniform" />
</ScrollViewer>
private void OnSizeChanged(object sender, SizeChangedEventArgs args)
{
    theImage.Width = theScrollViewer.ViewportWidth;
    theImage.Height = theScrollViewer.ViewportHeight;
}