在 UWP 開發(fā)中,我們在進(jìn)行數(shù)據(jù)綁定時,除了可以使用傳統(tǒng)的綁定 Binding,也可以使用全新的 x:Bind,由于后者是在程序編譯時進(jìn)行初始化操作(不同于 Binding,它是在運行時創(chuàng)建、初始化),所以我們可以稱 x:Bind 為編譯型綁定,正像本文標(biāo)題一樣。
之所以引入 x:Bind,是因為它相比傳統(tǒng)的 Binding 有很多優(yōu)點,比如:
性能更好;
編譯時錯誤;
便于調(diào)試:
使用方便(綁定到函數(shù)、事件等)
鑒于 x:Bind 有以上這些優(yōu)點,所以這里推薦大家在自己的項目中盡可能地使用它;當(dāng)然,相比 Binding,它也少了一些功能,所以在必要的時候,你任然需要使用傳統(tǒng)的綁定。換句話說,在項目中,你可以混合使用這兩種綁定方式。再次聲明:建議盡可能地使用 x:Bind,除非 x:Bind 不能完成你要的操作時,才考慮使用 Binding。
以下我會把 x:Bind 的使用方法以及上面提及的優(yōu)點,進(jìn)行較為詳細(xì)的說明。本文假設(shè)你已經(jīng)掌握了(或者至少理解) WPF/UWP 中的數(shù)據(jù)綁定的基本知識;在繼續(xù)學(xué)習(xí)下文之前,如果你還不了解數(shù)據(jù)綁定,建議你最好了解相關(guān)知識(相信大多數(shù)的 XAML 開發(fā)人員都沒問題)。
x:Bind 的數(shù)據(jù)源
與傳統(tǒng)綁定較大的區(qū)別,是 x:Bind 的數(shù)據(jù)源為當(dāng)前 View(即頁面 Page 或用戶控件UserControl)自身,也就是說,它使用 Page 或 User Control 的實例為作數(shù)據(jù)源;因此如果你設(shè)置了 Path 屬性, x:Bind 會到當(dāng)前 Code-Bebind 類中找對應(yīng)名稱的成員(屬性、字段、方法)。在下例中,x:Bind 會在當(dāng)前用戶控件實例中找到其 InfoA 屬性并進(jìn)行綁定。
<UserControl x:Class="xBindTest.Controls.BindingModeControl"... <TextBl