2011-01-06 65 views
2

下面的代碼確實有效,但我不明白爲什麼。我剛剛通過僥倖得到了解決方案。爲什麼這個有效? (綁定在Panorama-Template,Windows Phone 7中)

<controls:Panorama x:Name="PanoramaMama" Title="my header"> 
    <controls:Panorama.TitleTemplate> 
     <DataTemplate> 
      <TextBlock Foreground="Red" Text="{Binding}"/> 
     </DataTemplate> 
    </controls:Panorama.TitleTemplate> 
    <controls:Panorama.HeaderTemplate> 
     <DataTemplate> 
      <TextBlock Foreground="Blue" Text="{Binding}" /> 
     </DataTemplate> 
    </controls:Panorama.HeaderTemplate> 

    <!--Panorama item one--> 
    <controls:PanoramaItem Header="item one"> 

     <Grid/> 
    </controls:PanoramaItem> 

    <!--Panorama item two--> 
    <controls:PanoramaItem Header="item two"> 
     <Grid/> 
    </controls:PanoramaItem> 
</controls:Panorama> 

我想實現是爲所有人創造一個PanoramaItems和HeaderTemplate中指定每個PanoramaItem標題文本。例如爲:<controls:PanoramaItem Header="item one">

在模板中,不帶任何參數結合這項工作:Text="{Binding}"

這是爲什麼工作? 綁定必須使用一些默認值(默認路徑左右) - 這些默認值?綁定的非縮寫版本是什麼?

回答

3

您已經分配了一個字符串作爲用於Header內容的對象。

您還指定了DataTemplate以顯示分配給Header屬性的對象。在這種情況下,如上所述,對象只是一個字符串。因此該字符串變爲ContentPresenter最終用於顯示標題的DataContext

當您使用{Binding}而沒有任何路徑時,綁定將返回源對象。如果不指定任何源對象,則默認源對象是當前設置了綁定的元素DataContext。因此,在這種情況下{Binding}的結果是您分配給Header屬性的字符串。

這個綁定沒有「非縮寫版本」,當然沒有任何意義。