2011-08-10 65 views
1

好的,聽起來很奇怪,而且可能有更好的方法,但我還沒有看到它。是否可以從數據模板綁定到控件的屬性?

我試圖做的是restyle的Windows Phone 7

下ListPicker我需要的是

  1. 擺脫頭(這很容易,只要定義一個空ListPicker。 HeaderTemplate中)。
  2. 強制選取器在單擊時始終進入完整模式(再次簡單,只需將ItemCountThreshold設置爲1)。
  3. Restyle ItemTemplate中使用時,FullMode(再次,方便,只需定義FullModeItemTemplate)
  4. 納入了ListPicker的「頭」屬性值到ItemTemplate中(因爲只有一個項目都不會顯示,我需要的標題文本「嵌入「在一個項目內)。

這是我看起來無法得到的數字4。我已經定義了一個listpicker像這樣(我現在直接定義內聯模板而不是資源,只是爲了簡單)。

 <phonekit:ListPicker Header="Header Text" x:Name="ListOfSounds" 
          SelectedItem="{Binding Path=DepartureChime, Mode=TwoWay, Converter={StaticResource EnumDescriptionToStringConverter}}" 
          ItemCountThreshold="1"> 
      <phonekit:ListPicker.ItemTemplate> 
       <DataTemplate> 
        <StackPanel Orientation="Horizontal" Background="Transparent"> 
         <TextBlock Text="{TemplateBinding Header}" /> 
         <TextBlock Text="{Binding}" /> 
         <TextBlock Text=">" /> 
        </StackPanel> 
       </DataTemplate> 
      </phonekit:ListPicker.ItemTemplate> 

忽略所有現在明顯的格式位,我遇到的問題是,我不能使用{TemplateBinding頭}從一個DataTemplate內。我從ControlTemplate使用它沒有問題。

這個ItemTemplate中的結果應該是一個項目顯示,如

{TextOfHeader}{Content of selected Item}> 

我只是不知道如何去在模板化控件(在這種情況下listpicker)的屬性得到。

任何想法?

+0

WP7採用了Silverlight,WPF沒有足夠 –

+0

真。當你開始時,他們看起來都很相似。 – DarinH

回答

0

RelativeSource發揮優勢:

<TextBlock Text="{Binding Path=Header, RelativeSource={RelativeSource AncestorType={x:Type phonekit:ListPicker}}}" /> 
+0

'RelativeSource'只有在您使用Silverlight 3時將Mango/7.1 SDK作爲目標纔可用。 –

+0

我找到了relativesource,但是我從來沒有能夠使它工作。 – DarinH

+0

好的。不能編輯以前的評論,所以這裏再次。 – DarinH

相關問題