[Some information relates to pre-released product which may be substantially modified before it's commercially released. Microsoft makes no warranties, express or implied, with respect to the information provided here.]

[涉及某信息预发布的版本可能在它的商业版本大幅修改。对于这里提供的信息,微软不作任何担保。]

一、x:DeferLoadStrategy

Lazy<T> 大家基本都熟悉,就是延迟加载,使用的时候才去加载相应的对像,DeferLoadStrategy与Lazy<T>也是差不多。界面加载的是不会加载这个控件的,直到你去手动调用的时候。

现在已知有两种方式可以加载控件,一个是FindName,另一个是GetTemplateChild。

二、一个简单的例子

        <RelativePanel HorizontalAlignment="Center">

            <Button x:Name="_btnLoad" Content="Load" HorizontalAlignment="Left" VerticalAlignment="Top" Click="Button_Click" />

            <Rectangle x:Name="_lasyRect" Width="100" Height="100" Fill="Red" x:DeferLoadStrategy="Lazy" RelativePanel.RightOf="_btnLoad" />

        </RelativePanel>
private void Button_Click(object sender, RoutedEventArgs e)
{
if (_lasyRect == null)
{
this.FindName(nameof(_lasyRect));
}
}

显示的效果是这样的,没有Rectangle

如果只是不显示了,真心也没啥意思,我们看一下可视化树。

这里可以吐下嘈,VS2015把查看可视化树的工具集成到VS中了,深深的为Xaml Spy 之类的工具默哀。

这个位置只有一个Button,没有Rectangle。是不是眼前亮。我们点击一下。

一下子就出来了。

三、应用场景

想想我们能用在哪。

1、先想到的就是自定义控件里呀,好多人喜欢写个控件,但哪个值不为空的时候显示哪个,以前用的都是Collapsed,现在可以跟本不用加载。

2、加载图片的时候,有的时候我们会加载好多网图片,但可能有些数据就是没有图片,还要加载那边多的Image控件感觉不太好(其实可以用切换数据模板的方式处理)。

本文地址:http://www.cnblogs.com/gaoshang212/p/4561595.html

【Win10】UAP/UWP/通用 开发之 x:DeferLoadStrategy的更多相关文章

  1. 【Win10】UAP/UWP/通用 开发之 x:Bind

    [Some information relates to pre-released product which may be substantially modified before it's co ...

  2. 【Win10】UAP/UWP/通用 开发之 RelativePanel

    [Some information relates to pre-released product which may be substantially modified before it's co ...

  3. 【Win10】UAP/UWP/通用 开发之 SplitView

    [Some information relates to pre-released product which may be substantially modified before it's co ...

  4. 【Win10】UAP/UWP (通用程序) 开发初体验(1) 之 开发准备

    一.准备: 1.准备一个 10074或更高版本的Win10.可以通过 https://insider.windows.com/ 地址,加入Windows 的会员俱乐部免费获取的. 2.下载Visual ...

  5. UWP开发之Template10实践二:拍照功能你合理使用了吗?(TempState临时目录问题)

    最近在忙Asp.Net MVC开发一直没空更新UWP这块,不过有时间的话还是需要将自己的经验和大家分享下,以求共同进步. 在上章[UWP开发之Template10实践:本地文件与照相机文件操作的MVV ...

  6. UWP开发之Template10实践:本地文件与照相机文件操作的MVVM实例(图文付原代码)

    前面[UWP开发之Mvvmlight实践五:SuspensionManager中断挂起以及复原处理]章节已经提到过Template10,为了认识MvvmLight的区别特做了此实例. 原代码地址:ht ...

  7. UWP开发之Mvvmlight实践七:如何查找设备(Mobile模拟器、实体手机、PC)中应用的Log等文件

    在开发中或者后期测试乃至最后交付使用的时候,如果应用出问题了我们一般的做法就是查看Log文件.上章也提到了查看Log文件,这章重点讲解下如何查看Log文件?如何找到我们需要的Packages安装包目录 ...

  8. Liferay7 BPM门户开发之10: 通用流程实现从Servlet到Portlet(Part1)

    开发目的: 实现通用流程自动化处理(即实现不需要hardcode代码的bpm统一处理后台,仅需要写少量前端html form代码和拖拽设计BPM定义) 既可独立运行或可依托于Liferay或依托其它门 ...

  9. Android开发之旅: Intents和Intent Filters(理论部分)

    引言 大部分移动设备平台上的应用程序都运行在他们自己的沙盒中.他们彼此之间互相隔离,并且严格限制应用程序与硬件和原始组件之间的交互. 我们知道交流是多么的重要,作为一个孤岛没有交流的东西,一定毫无意义 ...

随机推荐

  1. nfs:环境搭建

    准备环境 通过VirtualBox创建两台虚拟机client1和client2,这两台虚拟机和物理主机组成一个网络.将物理主机作为NFS的服务端,虚拟机client1和client2作为NFS的客户端 ...

  2. SQL语句性能测试

    /* --Sqlserver 清楚执行缓存, 用于SQL语句性能测试 DBCC DROPCLEANBUFFERS DBCC FREEPROCCACHE */

  3. [转]阿里云CentOS配置全过程

     

  4. 解压版MySQL5.7.1x的安装与配置

    解压版MySQL5.7.1x的安装与配置 MySQL安装文件分为两种,一种是msi格式的,一种是zip格式的.如果是msi格式的可以直接点击安装,按照它给出的安装提示进行安装(相信大家的英文可以看懂英 ...

  5. 《CODE》读后笔记——第14~20章

    14.反馈与触发器 振荡器不需要人的干涉即可自主且不断地实现断开和闭合.所有计算机都靠某种振荡器来使其他部件同步工作. 当两个开关都断开时,电路有两个稳定状态,这样的一个电路称为触发器.触发器具有记忆 ...

  6. HttpWebResponse远程服务器返回错误: (500) 内部服务器错误。

    现象 我们编码实现请求一个页面时,请求的代码类似如下代码: HttpWebRequest req = (HttpWebRequest)WebRequest.Create(strUrl); req.Us ...

  7. 检查或遍历android手机应程

    检查android手机中是否存在某应程 public boolean checkApp(String packageName) {        if (packageName == null || ...

  8. UnicodeEncodeError: 'ascii' codec can't encode characters in position问题的解决办法

    今天刚开始用ulipad写python代码 代码如下 #! /usr/bin/env python#coding=utf-8a = int(raw_input('请输入一个数:'))if a<1 ...

  9. java设计模式之-----桥接模式

    一.概念定义 将抽象部分和实现部分分离,使他们都可以独立的变化.(这句话有点抽象啊..) 在软件系统中,某种类型由于自身逻辑,具有多个维度的变化,如何利用面向对象的技术来使得该类型沿着多方向变化,而又 ...

  10. 站点图标favicon.ico

    favicon.ico图标: 网站的favicon.ico需要一次额外的http请求,无论你是否有在html里面添加 link链接 <link rel="shortcut icon&q ...