在XAML页面上预加载背景图像

本文关键字:加载 背景 图像 XAML | 更新日期: 2023-09-27 17:57:57

我正在用C#和.NET Framework 4.5开发一个Windows 8.1应用程序。

我有一个以图像为背景的页面:

</Page.Resources>
<Grid>
    <Grid.Background>
        <ImageBrush Stretch="UniformToFill" ImageSource="ms-appx:///Assets/Backgrounds/Clase.png"/>
    </Grid.Background>

但是,我看到首先出现的是页面,然后出现的是图像(加载不到一秒钟,但我可以完美地看到黑色背景,然后是图像)。

这就是我导航到该页面的方式:

if (Frame != null)
    Frame.Navigate(typeof(QuizPage));

我将图像设置为"内容"answers"始终复制"。

如何避免这个问题?有没有预加载该图像?

在XAML页面上预加载背景图像

我不确定,但我有一种感觉,Navigate()调用实际上可能在等待一点,以便立即显示较小的图像,但为了获得即时导航并使应用程序做出响应,它会很快超时并进行导航,即使在未加载图像的情况下也是如此。

WinRT XAML Toolkit中的AlternativeFrameAlternativePage控件是框架附带的Frame/Page控件的替换项。他们的API表面相当相似,但他们有一些添加。其中包括ShouldWaitForImagesToLoad属性,该属性使他们等待在导航到的页面上加载所有图像。还有一个Preload()方法,它允许预加载下一个或多个页面,这样当您调用Navigate()时,带有图像的下一个页面已经在后台加载,并且可以立即显示。

页面过渡动画是一个额外的奖励。