x:Bind 与经典 Binding 相比如何,尽可能简洁?

How does x:Bind compare with the classical Binding, put as concisely as possible?

已编译绑定x:Bind与经典绑定有何不同,请尽可能简明扼要?

classic 绑定使用反射来获取要绑定的属性值。 X:Bind 在编译时创建一个 class 来获取值,这样绑定会更快

  • classical 绑定相比,您不能将以下绑定属性与 x:BindElementNameRelativeSourceSourceUpdateSourceTrigger。好吧,这几乎总结了 x:Bind 的局限性,但是 x:Bind 本身就很强大——值得注意的是 编译绑定 从而提高性能。在 x:Bind 的军械库中查看另一个强大的东西的最后一个要点。

  • 永远记住的重要一点:x:Bind 的数据上下文是代码隐藏 class。要将 x:Bind 引导到 ViewModel class,只需在页面 DataContext 的 ViewModel 对象引用前加上前缀。

  • 还有一点要记住,默认绑定模式是OneTime,而OneWay TwoWay 模式也可用。如果某个绑定似乎不起作用,则可能是该绑定处于默认模式并且超过了 OneTime 触发器。为避免此类事故,请明确定义绑定模式。

  • 我最喜欢的 -- 使用 x:Bind 绑定事件 -- 现在您可以轻松实现事件到方法模式。在 XAML 中,忘记 Tapped="MyTapHandlerInCodeBehind" 代码并开始使用 x:Bind 变体 Tapped="{x:Bind ViewModel.MyTapHandlerInViewModel}"。一个小的缺点是您不能像 classical 事件处理程序一样传递 Parameter ,但这不是常见的用例和存在替代方案。