2016-05-23 69 views
21

在UWP中使用什麼,Bindingx:Bind以及它們之間的區別是什麼?綁定和x之間的區別:綁定

因爲我看到很多帖子,其中人們使用Binding,而我只與UWP中的x:Bind綁定。

在MSDN主頁上,它只是說「由{x:Bind}{Binding}創建的綁定對象在功能上基本等同。」那x:Bind更快

但他們之間有什麼不同?

因爲「在功能上大體相當」並不等同。

從我引用的鏈接:MSDN

所以我的問題是:

是什麼使用綁定或x的區別:在UWP綁定?

+2

可以說,最重要的區別是(如[{x:Bind}標記擴展]所述(https://msdn.microsoft.com/en-us/windows/uwp/xaml-platform/x-bind- *「編譯的綁定是強類型的,並且將解析路徑中每一步的類型,如果返回的類型沒有成員,**它會在編譯時**失敗。」* – IInspectable

回答

27

以下是可能不完整,但一些主要的區別是

  • 老式{Binding }

    • 結合到DataContext
    • 綁定到一個屬性名稱,靈活的對實際來源類型


  • 新風格{x:Bind }
    • 結合到框架元件(代碼隱藏類)
    • 需求的所有類型的固定在編譯時
    • 默認爲更節儉一次性模式

而且starting with build 14393{x:Bind }支持:

  • 直接BooleanToVisibility結合未經ValueConverter
  • 擴展功能結合
  • 鑄造
  • 詞典索引

較新的{X:綁定}是一個在運行時稍微快一些,但同樣重要的是它會給錯誤的綁定帶來編譯錯誤。有了{綁定},在大多數情況下你只會看到一個空的控件。

6

{x:Bind}執行在編譯時生成的專用代碼。 {Binding}使用通用運行時對象檢查。因此,{x:Bind}具有很好的性能,並提供了綁定表達式的編譯時驗證。它通過使您能夠在作爲頁面的部分類生成的代碼文件中設置斷點來支持調試。

因爲{x:Bind}使用生成的代碼來實現它的好處,它需要編譯時的類型信息。這意味着您無法提前綁定到您不知道類型的屬性。因此,不能將{x:Bind}與DataContext屬性(其類型爲Object)一起使用,並且在運行時也會發生更改。 {x:Bind}標記擴展 - 新的Windows 10 - 是{Binding}的替代品。 {x:Bind}缺少{Binding}的一些功能,但運行時間更少,內存更少,並且支持更好的調試。

+2

您可以添加您引用的來源嗎? –

相關問題