在 UWP 开发中,我们在进行数据绑定时,除了可以使用传统的绑定 Binding,也可以使用全新的 x:Bind,由于后者是在程序编译时进行初始化操作(不同于 Binding,它是在运行时创建、初始化),所以我们可以称 x:Bind 为编译型绑定,正像本文标题一样。
之所以引入 x:Bind,是因为它相比传统的 Binding 有很多优点,比如:

  • 性能更好;

  • 编译时错误;

  • 便于调试:

  • 使用方便(绑定到函数、事件等)

鉴于 x:Bind 有以上这些优点,所以这里推荐大家在自己的项目中尽可能地使用它;当然,相比 Binding,它也少了一些功能,所以在必要的时候,你任然需要使用传统的绑定。换句话说,在项目中,你可以混合使用这两种绑定方式。再次声明:建议尽可能地使用 x:Bind,除非 x:Bind 不能完成你要的操作时,才考虑使用 Binding。

以下我会把 x:Bind 的使用方法以及上面提及的优点,进行较为详细的说明。本文假设你已经掌握了(或者至少理解) WPF/UWP 中的数据绑定的基本知识;在继续学习下文之前,如果你还不了解数据绑定,建议你最好了解相关知识(相信大多数的 XAML 开发人员都没问题)。

x:Bind 的数据源

与传统绑定较大的区别,是 x:Bind 的数据源为当前 View(即页面 Page 或用户控件UserControl)自身,也就是说,它使用 Page 或 User Control 的实例为作数据源;因此如果你设置了 Path 属性, x:Bind 会到当前 Code-Bebind 类中找对应名称的成员(属性、字段、方法)。在下例中,x:Bind 会在当前用户控件实例中找到其 InfoA 属性并进行绑定。

<UserControl x:Class="xBindTest.Controls.BindingModeControl"...
        <TextBl