在 UWP 開發(fā)中,我們在進行數據綁定時,除了可以使用傳統的綁定 Binding,也可以使用全新的 x:Bind,由于后者是在程序編譯時進行初始化操作(不同于 Binding,它是在運行時創(chuàng)建、初始化),所以我們可以稱 x:Bind 為編譯型綁定,正像本文標題一樣。
之所以引入 x:Bind,是因為它相比傳統的 Binding 有很多優(yōu)點,比如:

  • 性能更好;

  • 編譯時錯誤;

  • 便于調試:

  • 使用方便(綁定到函數、事件等)

鑒于 x:Bind 有以上這些優(yōu)點,所以這里推薦大家在自己的項目中盡可能地使用它;當然,相比 Binding,它也少了一些功能,所以在必要的時候,你任然需要使用傳統的綁定。換句話說,在項目中,你可以混合使用這兩種綁定方式。再次聲明:建議盡可能地使用 x:Bind,除非 x:Bind 不能完成你要的操作時,才考慮使用 Binding。

以下我會把 x:Bind 的使用方法以及上面提及的優(yōu)點,進行較為詳細的說明。本文假設你已經掌握了(或者至少理解) WPF/UWP 中的數據綁定的基本知識;在繼續(xù)學習下文之前,如果你還不了解數據綁定,建議你最好了解相關知識(相信大多數的 XAML 開發(fā)人員都沒問題)。

x:Bind 的數據源

與傳統綁定較大的區(qū)別,是 x:Bind 的數據源為當前 View(即頁面 Page 或用戶控件UserControl)自身,也就是說,它使用 Page 或 User Control 的實例為作數據源;因此如果你設置了 Path 屬性, x:Bind 會到當前 Code-Bebind 類中找對應名稱的成員(屬性、字段、方法)。在下例中,x:Bind 會在當前用戶控件實例中找到其 InfoA 屬性并進行綁定。

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