2012-02-17 60 views
18

我在XAML中使用了很多綁定,有時我在綁定中使用path =,有時候不使用。 在哪些情況下,我是否需要路徑=以及何時可以忽略此?Path =在XAML中有什麼用途?

+4

相關:(http://stackoverflow.com/ [之間{結合屬性名}和{綁定路徑=屬性名}不同]問題/ 4306657 /差between- binding-propertyname-and-binding-path-propertyname) – 2012-02-21 19:15:16

回答

9

它總是可以省略,因爲它是Binding XAML擴展的默認屬性。只有在使用多個屬性時才明確指定。

+0

謝謝......在這種情況下,我將刪除關鍵字(至少如果語法突出顯示在另一評論中仍然很好)。 (我可以在幾分鐘內接受它)。 – 2012-02-17 12:03:26

+3

當涉及到標記擴展時,沒有這種東西作爲默認屬性,可以這麼說,因爲我們在這裏處理構造函數時太模糊了。並且[不能總是省略](http://stackoverflow.com/a/9383001/546730)。 – 2012-02-21 19:18:12

4

當您直接在Binding語句後面寫入屬性路徑時,您可以隨時省略Path =。

{Binding MyProperty} 

相同

{Binding Path=MyProperty} 

當你內嵌的路徑,你需要與路徑指定它=

{Binding FallbackValue='HelloWorld', Path=MyProperty} 
2

像理查德·紹洛伊說的財產,它是可選的,如果這是第一個物業。但是在我的觀點中,如果你輸入路徑屬性,讀起來更容易。代碼突出顯示看起來更好。

9

這是由於綁定類有一個默認的構造函數,當你有一個像{Binding FallbackValue='HelloWorld', Path=MyProperty}綁定使用,並且具有單個參數路徑構造的事實。

因此,當有屬性/值對的列表作爲

new Binding(){ 
    Path="MyProperty" 
    ElementName="MyElement" 
} 

第二種形式是用於像{Binding MyProperty, ...}綁定創建綁定。在這種情況下,結合創建爲

new Binding("MyProperty"){ 
    ElementName = "MyElement", 
    ... 
} 

它總是正確的(也可能是更正確的)來指定路徑=,但你可以逃脫離不開它。

6

路徑用於指定要綁定到的基礎對象的屬性的名稱。

當您綁定到DataContext,則可以省略路徑:

{Binding MyProperty}  

{Binding Path=MyProperty} 

當你需要指定其他源比的DataContext你可以使用SourceRelativeSource,或者ElementName來指代對象,所以你通常必須指定要設置您的結合,其中其屬性:

<Button Background="{Binding ElementName=refButton, Path=Background}"/> 

<TextBlock Width="{Binding RelativeSource={RelativeSource Self}, Path=Parent.ActualWidth}"/>