本篇文章主要介绍了"UWP开发之Mvvmlight实践四:{x:bind}和{Binding}区别详解",主要涉及到方面的内容,对于Windows Phone开发感兴趣的同学可以参考一下:
{x:bind}是随着UWP被推出而被添加的,可以说是Win10 UWP开发专有扩展。虽然 {x:Bind} 缺少{Binding} 中的一些功能,但它运行时所...
{x:bind}是随着UWP被推出而被添加的,可以说是Win10 UWP开发专有扩展。虽然 {x:Bind} 缺少{Binding} 中的一些功能,但它运行时所花费的时间和使用的内存量均比 {Binding} 要少,且支持更好的调试。
参照网址:{x:Bind} 标记扩展,GitHub微软UWP实例之XamlBind
1,{x:Bind} 基本原理
在 XAML 加载时,{x:Bind} 将转换为你所需的绑定对象,此对象将从数据源上的某一属性中获取相关值。绑定对象可以配置为观察数据源属性值的更改,并基于这些更改自行刷新。该对象也可以配置为将其自己的值的更改推送回源属性。
2,{x:bind}{Binding}两者区别
- {x:Bind} 和 {Binding} 创建的绑定对象在功能上大致等同。
- {x:Bind} 执行编译时所生成的专用代码,而 {Binding} 使用通用的运行时对象检查。
- {x:Bind} 绑定(通常指已编译的绑定)具有出色的性能、提供编译时对绑定表达式的验证,并支持通过允许你在作为页面的部分类生成的代码文件中设置断点进行调试。可以在
obj
文件夹中找到这些文件,其名称类似于(适用于 C#).g.cs
。 - {x:Bind} 不将 DataContext 用作默认源 — 它将改用页面或用户控件本身。因此,它将针对属性、字段和方法查找代码隐藏的页面或用户控件。要向 {x:Bind} 显示视图模型,你通常需要将新字段或属性添加到代码隐藏的页面或用户控件。属性路径中的步骤由点号分隔 (.),并且可包含多个分隔符以遍历连续的子属性。
- 使用 x:Bind 时,无需将 ElementName=xxx 用作绑定表达式的一部分。使用 x:Bind 时,你可以使用元素的名称作为绑定路径的第一部分,因为已命名的元素变为表示根绑定源的页面或用户控件内的字段。
- 事件绑定是编译绑定的一项新功能。它允许你使用绑定为事件指定处理程序,而无需使其成为代码隐藏的方法。
- 在将 {x:Bind} 用于数据模板时,需通过设置 x:DataType 值来指示要绑定到的类型,你也可以将类型设置为接口或基类类型,然后按需使用转换,从而编写一个完整的表达式。
3,{x:Bind}基本用法
propertyPath | 一个指定绑定的属性路径的字符串 |
bindingProperties | propName=value[, propName=value]* 使用一个名称/值对语法指定的一个或多个绑定属性
|