绑定和x之间的区别:绑定

时间:2016-05-23 18:28:45

标签: xaml data-binding win-universal-app uwp

在UWP中使用什么,Bindingx:Bind以及它们之间的区别是什么?

因为我看到很多帖子,人们使用Binding而我只在UWP中与x:Bind绑定。

在MSDN主页上,它只说“{x:Bind}{Binding}创建的绑定对象在功能上大致相同。”并且x:Bind 更快

但它们之间有什么区别?

因为“在很大程度上与功能相当”并不等同。

我的报价链接:MSDN

所以我的问题是:

使用Binding或x有什么区别:在UWP中绑定?

2 个答案:

答案 0 :(得分:44)

以下内容可能并不完整,但有些主要区别是

  • 旧样式{Binding }

    • 绑定到DataContext
    • 绑定到属性名称,灵活地了解实际的源类型


  • 新款{x:Bind }
    • 绑定到Framework元素(代码隐藏类)
    • 需要在编译时修复的所有类型
    • 默认使用更节俭的OneTime模式

starting with build 14393{x:Bind }支持:

  • 直接BooleanToVisibility绑定,没有ValueConverter
  • 扩展功能绑定
  • 施放
  • 字典索引器

较新的{x:Bind}在运行时稍微快一些,但同样重要的是它会给错误的绑定带来编译错误。使用{Binding},您在大多数情况下只会看到一个空控件。

答案 1 :(得分:7)

{x:Bind}执行特殊用途代码,它在编译时生成。 {Binding}使用通用运行时对象检查。因此,{x:Bind}具有出色的性能,并提供绑定表达式的编译时验证。它支持调试,允许您在作为页面的部分类生成的代码文件中设置断点。

因为{x:Bind}使用生成的代码来实现其好处,所以它需要在编译时输入类型信息。这意味着您无法提前绑定到您不知道类型的属性。因此,您不能将{x:Bind}与DataContext属性一起使用,该属性的类型为Object,并且在运行时也可能会更改。 {10}的{x:Bind}标记扩展程序 - 是{Binding}的替代。 {x:Bind}缺少{Binding}的某些功能,但它运行的时间少,内存少于{Binding},并支持更好的调试。