我有一个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绑定不正确。
感谢您的帮助。
答案 0 :(得分:2)
在您的示例中, MyPivotTitle 是DataTemplate中的一个元素,因此无法直接从您的代码中访问,因此错误。如果您需要访问项控件模板中的控件(例如Pivot
或ListBox`),那么您可能会发现WIndowsPhoneGeek.com中的this article有用。
然而,听起来你可以在没有任何“黑客攻击”的情况下做到这一点。这个标题和副标题只适用于单个枢轴项目,还是会出现在所有这些项目上?您在枢轴项上绑定了哪些其他数据?