在 UWP 開發(fā)中,我們?cè)谶M(jìn)行數(shù)據(jù)綁定時(shí),除了可以使用傳統(tǒng)的綁定 Binding,也可以使用全新的 x:Bind,由于后者是在程序編譯時(shí)進(jìn)行初始化操作(不同于 Binding,它是在運(yùn)行時(shí)創(chuàng)建、初始化),所以我們可以稱 x:Bind 為編譯型綁定,正像本文標(biāo)題一樣。
之所以引入 x:Bind,是因?yàn)樗啾葌鹘y(tǒng)的 Binding 有很多優(yōu)點(diǎn),比如:

  • 性能更好;

  • 編譯時(shí)錯(cuò)誤;

  • 便于調(diào)試:

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

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

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

x:Bind 的數(shù)據(jù)源

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

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

網(wǎng)友評(píng)論