我目前正在学习UWP和Xaml,并注意到这引起了我的兴趣。
当我制作一个背景图像为50kb的页面时,该页面包含一个网格,每个网格分别包含7个其他图像,每个图像分别为500bytes,虽然确实加载了页面,但在开始时图像仍未显示,并在几秒钟后显示(例如1 -1.5秒)。
是否可以通过某种方式告诉框架导航或NavigationedTo等待页面打开,直到所有图像都已加载?还是您需要在启动时以某种方式预加载映像?
- 更新 -
我想避免出现进度对话框,例如图像将成为屏幕的重要组成部分,并且仅出于此目的显示负载,这也给用户带来了一些奇怪的体验,因为您首先看到白色背景,然后突然看到背景与图片。
当我将7张图像放到网格之外时,背景图像几乎是即时显示的(几毫秒内),但是包括它们在内的结果是当所有图像都加载后会显示所有图像,从而产生闪烁效果。此外,它仅在第一次加载时发生,即离开页面导航,然后返回图像,此后立即显示。
例子:
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Page.Background>
<ImageBrush ImageSource="/Assets/Background/Scherm1.jpg"/>
</Page.Background>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Grid.Column="0" Opacity="0" Source="ms-appx:///Assets/Image1.png"/>
<Image Grid.Column="1" Opacity="0" Source="ms-appx:///Assets/Image2.png"/>
<Image Grid.Column="2" Opacity="0" Source="ms-appx:///Assets/Image3.png"/>
<Image Grid.Column="3" Opacity="0" Source="ms-appx:///Assets/Image4.png"/>
<Image Grid.Column="4" Opacity="0" Source="ms-appx:///Assets/Image5.png"/>
<Image Grid.Column="5" Opacity="0" Source="ms-appx:///Assets/Image6.png"/>
<Image Grid.Column="6" Opacity="0" Source="ms-appx:///Assets/Image7.png"/>
</Grid>
</Page>
您可以设置一个不确定的ProgressBar,将在其中加载图像。像这样的东西:
<BitmapImage ImageOpened="Banner_ImageOpened"/>
<ProgressBar x:Name="BannerProgressBar" IsIndeterminate="True"/>
并在后面的代码中:
private void Banner_ImageOpened(object sender, RoutedEventArgs e)
{
BannerProgressBar.Visibility = Visibility.Collapsed;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句