2011-03-24 30 views
1

我有一個樞軸標題模板,以便樞軸頁面有一個標題和副標題。我想通過代碼設置。WP7樞軸標題模板DataContext綁定不起作用

我在Blend中構建了XAML,並且沒有代碼綁定,它顯示出來以便部分工作。

但是,我的綁定不起作用。它要麼不會構建,因爲該對象沒有DataContext,或者該對象不存在於當前上下文中,或者構建但不會顯示。當它不顯示時,我假設我綁定了錯誤的XAML對象。每個對象都被命名,所以我可以找到合適的對象來綁定。

的標題和副標題的綁定代碼包含類的樣子:

public class PivotTitle 
{ 
    public string Title = ""; 
    public string Subtitle = ""; 
} 

我的問題是:我該如何正確地綁定TitleTemplate使兩者的TextBlocks'文本屬性可以在代碼中設置?

這裏是XAML

 <controls:Pivot.TitleTemplate > 
      <DataTemplate x:Name="PivotTitleTemplateDataTemplate" > 
       <StackPanel x:Name="MyPivotTitle" DataContext="{Binding}" > 
        <TextBlock x:Name="Title" 
         Text="{Binding Title}" 
         FontSize="20" 
         TextWrapping="Wrap"/> 
        <TextBlock x:Name="Subtitle" 
         Text="{Binding Subtitle}" 
         Foreground="Gray" 
         TextWrapping="Wrap"/> 
       </StackPanel> 
      </DataTemplate> 
     </controls:Pivot.TitleTemplate> 

的標題和副標題都依賴從導航的頁面上。後面的代碼看起來像:

//定義在頁面頂部 public PivotTitle _PivotTitle = new PivotTitle();

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) 
    { 
     base.OnNavigatedTo(e); 


     string queryStringDeploymentName = ""; 

     this.NavigationContext.QueryString.ContainsKey("DeploymentName")) 

     _PivotTitle.Title = SelectedDeployment.DeploymentName; 
     _PivotTitle.Subtitle = App.ViewModel.AppSettings.UpdatedText; 
     MyPivotTitle.DataContext = _PivotTitle; 
    } 

此特定示例不會生成此錯誤:名稱'MyPivotTitle'在當前上下文中不存在。在數據透視頁的列表框上的綁定工作正常。

我相信我的代碼隱藏和整體XAML是正確的。我認爲我的DataContext綁定不正確。

感謝您的任何幫助。

回答

2

在您的示例中MyPivotTitle是DataTemplate中的一個元素,因此無法直接從您的代碼中訪問,因此出現錯誤。如果您需要訪問項目控件(例如Pivot或ListBox)的模板內的控件,那麼您可能會發現WIndowsPhoneGeek.com的this article有用。

但是,聽起來好像你可以在沒有任何「黑客行爲」的情況下做到這一點。這個標題和副標題是爲單個數據透視圖項目設計的,還是將它放在所有的透視項目上?還有什麼其他數據,如果有的話,你綁定在數據透視表上?

+0

這個想法是通過代碼根據顯示哪個透視圖來統一控制應用程序樞紐中的標題和副標題。理想的是一個代碼類來管理它,而不是觸摸每個透視頁面代碼。 似乎我應該可以在應用程序級別執行此操作,但我陷入了Silverlight,這是我剛剛接觸的新手。 – DFBerry 2011-03-26 12:24:24