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

时间:2014-04-12 11:05:55

标签: c# xaml windows-8 windows-8.1

我正在使用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));

我将图像设置为内容和复制。

如何避免这个问题?反正有预加载那张图片吗?

1 个答案:

答案 0 :(得分:1)

我不确定,但我觉得Navigate()电话可能实际上正在等待一些如此小的图像立即显示,但要立即导航并使应用程序响应 - 即使未加载图像,它也会快速超时并导航。

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

页面过渡动画是一个额外的好处。