UWP基础教程 - {x:DeferLoadStrategy}

x:DeferLoadStrategy扩展标记是Windows10 UWP开发的新特性,这个特性可以用于优化启动性能,使用 x:DeferLoadStrategy="Lazy" 会延迟元素及其子元素的创建,通过不需要创建元素减少启动时间和内存使用量。

但是使用该扩展标记每个元素会向添加600个字节的内存,你延迟的元素树越大,将节省的时间也就越多,不过内存占用也会有所增加。 所以如果你的应用性能太低,可以使用内存来换取性能。

讲了这么多,有的同学估计还是一头雾水,那么我们来看下实际的应用吧,在之前要让一个应用隐藏,之前也说过通常设置Visibility或者Opacity,但是不管用哪种方式,这些元素依然加载了,并且消耗了资源。

<Image x:Name='img1' Source="/Assets/imgs/001.jpg" Visibility="Collapsed"/>
<Image x:Name='img2' Source="/Assets/imgs/002.jpg" Opacity="0"/>

给元素添加上x:DeferLoadStrategy="Lazy"其实同样能达到不可见的效果

<Image x:Name='img3' Source="/Assets/imgs/003.jpg" x:DeferLoadStrategy="Lazy"/>  

使用该扩展标记,并不会将代码加入Xaml元素树,你必须在代码中使用this.FindName

private void RealizeElements_Click(object sender, RoutedEventArgs e)
{
    this.FindName("img3"); 
}

在使用FindName后该控件才能被正确的使用。

我们可以将x:DeferLoadStrategy用在哪些数据没ready的情况下不显示控件的场景,这样可以大大优化应用程序的性能。

Comment