Xaml 绑定和x:Bind之间的区别
在UWP中使用什么,Xaml 绑定和x:Bind之间的区别,xaml,data-binding,win-universal-app,uwp,Xaml,Data Binding,Win Universal App,Uwp,在UWP中使用什么,绑定或x:Bind以及它们之间的区别是什么 因为我看到很多帖子,人们使用Binding,而我只在UWP中使用x:Bind进行绑定 在MSDN主页上,它只说“由{x:Bind}和{binding}创建的绑定对象在功能上基本上是等效的。”并且x:Bind更快 但是它们之间有什么区别呢? 因为“在很大程度上功能等同”并不意味着等同 我引用的链接: 所以我的问题是: 在UWP中使用Binding或x:Bind有什么区别?以下内容可能不完整,但一些主要区别是 旧式{Binding}
绑定
或x:Bind
以及它们之间的区别是什么
因为我看到很多帖子,人们使用Binding
,而我只在UWP中使用x:Bind
进行绑定
在MSDN主页上,它只说“由{x:Bind}
和{binding}
创建的绑定对象在功能上基本上是等效的。”并且x:Bind
更快
但是它们之间有什么区别呢?
因为“在很大程度上功能等同”并不意味着等同
我引用的链接:
所以我的问题是:
在UWP中使用Binding或x:Bind有什么区别?以下内容可能不完整,但一些主要区别是
- 旧式
{Binding}
- 绑定到DataContext
- 绑定到一个属性名,可根据实际源类型灵活设置
- 新样式
{x:Bind}
- 绑定到框架元素(代码隐藏类)
- 需要在编译时修复所有类型
- 默认为更节省的一次性模式
{x:Bind}
支持:
- 直接布尔可见性绑定,不带ValueConverter
- 扩展函数绑定
- 铸造
- 字典索引器
对于深入的比较签出:
{x:Bind}
执行它在编译时生成的专用代码<代码>{Binding}使用通用运行时对象检查。因此,{x:Bind}
具有良好的性能,并提供绑定表达式的编译时验证。它支持调试,使您能够在作为页面的分部类生成的代码文件中设置断点
因为{x:Bind}
使用生成的代码来实现其优点,所以它在编译时需要类型信息。这意味着您无法绑定到事先不知道类型的属性。因此,不能将{x:Bind}
与DataContext属性一起使用,DataContext属性的类型为Object,并且在运行时可能会发生更改。
Windows 10新增的
{x:Bind}
标记扩展是{Binding}
的替代{x:Bind}
缺少{Binding}
的一些功能,但是它比{Binding}
运行的时间和内存更少,并且支持更好的调试。可以说,最显著的区别是(如中所述):编译的绑定是强类型的,将解析路径中每个步骤的类型。如果返回的类型没有成员,它将在编译时失败。“我想知道x:Bind比Binding快多少。我能期望它快1.5倍、2倍、10倍等吗?由于这一切都是在XAML中发生的,我不知道如何衡量它。你能添加你引用的来源吗?@AxelMeier确切地说,答案来自citings。第一段来自本页的介绍,第二段来自本页的部分。我将添加示例来解释每一句话的含义。在我的特殊情况下,{Binding Data.Name,Mode=OneWay}不适用于更新(尽管数据和名称都实现了INotifyPropertyChanged),但{x:Bind Data.Name,Mode=OneWay}完成了更新。