WP7 Pivot标题模板DataContext绑定不起作用

时间:2011-03-24 16:45:01

标签: templates windows-phone-7 binding pivot title

我有一个Pivot标题模板,因此Pivot页面有一个标题和副标题。我想通过代码设置两者。

我在Blend中构建XAML并且没有代码绑定,它会显示以使该部分工作。

但是,我的绑定无效。它要么不构建,因为对象没有DataContext,或者对象在当前上下文中不存在,或者构建但不会显示。当它不显示时,我假设我绑定到错误的XAML对象。每个对象只被命名,所以我可以找到要绑定的正确对象。

Title和Subtitle的绑定代码的包含类看起来像:

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

我的问题是:如何正确绑定TitleTemplate,以便可以在代码中设置两个TextBlocks的Text属性?

这是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绑定不正确。

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

在您的示例中, MyPivotTitle 是DataTemplate中的一个元素,因此无法直接从您的代码中访问,因此错误。如果您需要访问项控件模板中的控件(例如Pivot或ListBox`),那么您可能会发现WIndowsPhoneGeek.com中的this article有用。

然而,听起来你可以在没有任何“黑客攻击”的情况下做到这一点。这个标题和副标题只适用于单个枢轴项目,还是会出现在所有这些项目上?您在枢轴项上绑定了哪些其他数据?