x:bind 作为win10 新特性,它好在哪?为什么要用它。

最近做UWP,对代码进行重构,对它有了一些了解。

先说优点:

1.性能高,内存小(相比传统的binding)

没图没真相,我先上2张图。

x:bind又叫 "compiled data bindings", 它是在编译的时候就确定了。

以前的Binding,是运行时绑定,我想里面免不了各种反射。

由于x:bind是编译时,所以必须是强类型,不能再是object类型(以前都是给datacontext赋值),这个特性提高了性能速度,但也带了不便,后面会讲。

有点注意的是,由于是编译时,所以绑定的错误在编译时就会提示出来,方便调试。

2. 如果不制定源的话,默认绑定源是page或者是usercontrol。

   <TextBlock Text="{x:Bind Title}"/><Button Content="{x:Bind VM.Name}"/>

 public sealed partial class MainPage : Page{public string Title = "Hi x:bind";public ViewModel VM;public MainPage(){this.InitializeComponent();VM = new ViewModel();}}public class ViewModel{public string Name = "I'm a button";public void Click(){}}

上面就是普通的用法。

下面我讲一下怎么在模板里面绑定和怎么绑定事件。

 <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"><Grid.Resources><DataTemplate x:Key="dateTemplate" x:DataType="local:ViewModel"><Button Content="{x:Bind Name}"/></DataTemplate></Grid.Resources><ContentControl ContentTemplate="{StaticResource dateTemplate}" Content="{x:Bind VM}"/></Grid>

这里注意一定要给模板制定DataType,不然编译就会报错,强类型,没办法

x:bind 可以绑定事件,在一定程度上简化之前用command 绑定的不便。

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"><Button x:Name="button" Content="Button" Click="{x:Bind VM.Click}" HorizontalAlignment="Left" Margin="126,258,0,0" VerticalAlignment="Top" Height="113" Width="103"/></Grid>

 public sealed partial class MainPage : Page{public string Title = "Hi x:bind";public ViewModel VM;public MainPage(){this.InitializeComponent();VM = new ViewModel();}}public class ViewModel{public string Name = "I'm a button";public void Click(){}}

说了这么多优点,那么缺点呢,至少我看来,由于是强类型,x:bind没法做到动态绑定,绑定源一定要是个强类型,不能再是object类型。

只能说看需求,在可以得情况下,还是尽量使用x:bind,毕竟性能内存优势在那里摆着,实在不行,用binding也不是不可以的。

转载于:https://www.cnblogs.com/FaDeKongJian/p/5090781.html

UWP x:bind相关推荐

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

    [Win10]UAP/UWP/通用 开发之 x:Bind [Some information relates to pre-released product which may be substant ...

  2. 张高兴的 UWP 开发笔记:横向 ListView

    ListView 默认的排列方向是纵向 ( Orientation="Vertical" ) ,但如果我们需要横向显示的 ListView 怎么办? Blend for Visua ...

  3. Windows UWP开发系列 – 3D变换

    在Win8.1中,引入了一个PlaneProjection可以实现3D变换,但它的变换方式比较简单,只能实现基本的旋转操作.在Windows 10 UWP中,引入了一个更加强大的3D变换Transfo ...

  4. win10 uwp 按下等待按钮

    我们经常需要一个按钮,在按下时,后台执行Task,这时不能再次按下按钮. 我们使用自定义控件,首先新建一个类,我把它命名是ProgressButton 一个进度条按钮,也就是我们按下时发生进度条,完成 ...

  5. win10 uwp 毛玻璃

    原文:win10 uwp 毛玻璃 版权声明:博客已迁移到 http://lindexi.gitee.io 欢迎访问.如果当前博客图片看不到,请到 http://lindexi.gitee.io 访问博 ...

  6. 【译】Visual Studio 2019 中 WPF UWP 的 XAML 开发工具新特性

    原文 | Dmitry 翻译 | 郑子铭 自Visual Studio 2019推出以来,我们为使用WPF或UWP桌面应用程序的XAML开发人员发布了许多新功能.在本周的 Visual Studio ...

  7. [UWP]用画中画模式(CompactOverlay Mode)让用总在最前端显示

    1. 什么是,以及怎么用画中画 Windows 10 Creators Update以后UWP提供了一个新的视图模式CompactOverlay,中文翻译成 紧凑的覆盖层?反正大部分时间我们都会称它为 ...

  8. UWP通过机器学习加载ONNX进行表情识别

    首先我们先来说说这个ONNX ONNX是一种针对机器学习所设计的开放式的文件格式,用于存储训练好的模型.它使得不同的人工智能框架(如Pytorch, MXNet)可以采用相同格式存储模型数据并交互. ...

  9. UWP开发随笔——UWP新控件!AutoSuggestBox!

    UWP开发随笔--UWP新控件!AutoSuggestBox! 原文:UWP开发随笔--UWP新控件!AutoSuggestBox! 摘要 要开发一款优秀的application,控件肯定是必不可少的 ...

最新文章

  1. 网站建设中图片挑选也要看方法!
  2. Java 设计模式(一)之单例模式 理论代码相结合
  3. 一个跨国银行的敏捷转型案例要点之全员培训
  4. java asm jndi_GitHub - Q1ngShan/JNDI: JNDI 注入利用工具
  5. 蓄水池抽样(Reservoir Sampling)
  6. 中缀变后缀(nyoj)
  7. eclipse中误删除的java文件 代码如何恢复
  8. DropdownList获取ID方法
  9. @SuppressWarnings注解的详解
  10. easyui---layout实战
  11. Dubbo 生态添新兵,Dubbo Admin 发布 v0.1
  12. pert计算公式期望值_计划评审技术(PERT)求工期、标准差、方差以及概率
  13. Linux:设置文件夹权限之777的含义
  14. amcharts的使用介绍
  15. ieg技术总监_干货!从程序员到技术总监,大牛内部分享的资料
  16. 人工智能--打飞机游戏
  17. 有意思的shell命令行提示符
  18. pe中怎么卸载服务器系统更新,如何卸载win7系统更新用pe装win7
  19. 【C语言】一文搞懂C语言文件操作
  20. Spring Boot 整合 Shiro(三)Kaptcha验证码 附源码

热门文章

  1. CNN结构:序列预测复合DNN结构-AcGANs、 ENN误差编码网络
  2. linux中怎么给用户设置不同的权限,linux怎么将一个文件设置为多个人拥有或者同一组内只让某两个用户有删除权限?...
  3. java Base64转码传图到C#
  4. CVE-2012-1876调试要点
  5. [LeetCode]题解(python):086-Partition List
  6. 视图之二--视图中数据的更新
  7. 按照指定字符(@split )分割字符串,并取第@index 个
  8. SAP 开发陷阱一箩筐(02)——无法创建客户增强的包含程序
  9. Fov手术会不会在手术中新增手术边界
  10. ubuntu19.10安装thrift