{x:bind}是随着UWP被推出而被添加的,可以说是Win10 UWP开发专有扩展。虽然 {x:Bind} 缺少{Binding} 中的一些功能,但它运行时所花费的时间和使用的内存量均比 {Binding} 要少,且支持更好的调试。
参照网址:{x:Bind} 标记扩展,GitHub微软UWP实例之XamlBind
1,{x:Bind} 基本原理
在 XAML 加载时,{x:Bind} 将转换为你所需的绑定对象,此对象将从数据源上的某一属性中获取相关值。绑定对象可以配置为观察数据源属性值的更改,并基于这些更改自行刷新。该对象也可以配置为将其自己的值的更改推送回源属性。
2,{x:bind}{Binding}两者区别
obj
文件夹中找到这些文件,其名称类似于(适用于 C#)<view name>.g.cs
。3,{x:Bind}基本用法
<object property="{x:Bind}" .../> -or- <object property="{x:Bind propertyPath}" .../> -or- <object property="{x:Bind bindingProperties}" .../> -or- <object property="{x:Bind propertyPath, bindingProperties}" .../>
propertyPath | 一个指定绑定的属性路径的字符串 |
bindingProperties |
propName=value[, propName=value]* 使用一个名称/值对语法指定的一个或多个绑定属性 |
propName | 要在绑定对象上设置的属性的字符串名称 |
value | 要将属性设置为的值。参数的语法取决于要设置的属性。 |
备注:PropertyPath 为 {x:Bind} 表达式设置 Path。Path 是一个属性路径,用于指定要绑定到的(源)属性、子属性、字段或方法的值。你可以明确指出 Path 属性名称:{Binding Path=...}
。也可以将其省略:{Binding ...}
。
4,{x:Bind}属性设置
Path | 属性路径 |
Converter | 指定绑定引擎所调用的转换器对象。转换器可在 XAML 中设置,但只能在你引用已在 XAML 中的 ResourceDictionary中分配的对象实例时设置。你可以使用资源字典中对该对象的 {StaticResource} 标记扩展引用。 |
ConverterLanguage | 指定转换器要使用的区域性。(如果你要设置 ConverterLanguage,则还应设置 Converter。)区域性可设置为一个基于标准的标识符。有关详细信息,请参阅 ConverterLanguage。 |
ConverterParameter | 指定可在转换器逻辑中使用的转换器参数。 (如果你要设置 ConverterParameter,则还应设置 Converter。)大多数转换器使用可从要转换的传递值获取所有所需信息的简单逻辑,不需要 ConverterParameter值。ConverterParameter 参数适用于具有多个逻辑的中等高级转换器实现,这些逻辑可切断传入ConverterParameter 的内容。你可以编写一个转换器,使用除字符串之外的值,但这种情况并不常见,请参阅ConverterParameter 中的备注,以获取详细信息。 |
FallbackValue | 指定要在无法解析源或路径时显示的值。 |
Mode | 将绑定模式指定为以下一种字符串:"OneTime"、"OneWay" 或 "TwoWay"。默认值是 "OneTime"。请注意,该值不是{Binding} 的默认值,大多数情况下为"OneWay"。 |
TargetNullValue | 指定要在源值解析但并非显式 null 时显示的值。 |
备注:OneTime只作为显示,OneWay实现了INotifyPropertyChanged的属性接收状态变更,TwoWay实现了INotifyPropertyChanged的交互属性。
5,常见例子
public void GoForward(object sender, RoutedEventArgs e){}
private void GoForward(){}
private void GoForward(object sender, object e){}
对于事件,目标方法不能重载,而且还必须:
- 匹配事件的签名。
- 或者没有任何参数。
- 或者具有相同数量的参数类型,这些参数根据事件参数的类型进行赋值。
在生成的代码隐藏中,已编译的绑定将处理事件并将其路由到模型上的对应方法,并在该事件发生时计算绑定表达式的路径。这意味着,与属性绑定不同的是,它不跟踪模型的更改。
UWP开发之Mvvmlight实践四:{x:bind}和{Binding}区别详解
原文:http://www.cnblogs.com/lixiaobin/p/xbinddiffbinding.html