0

我想用两个文本块创建自定义数据透视表头:一个用于标题标题,一个用于副标题,或者可能为每个数据透视页面添加相同的静态字幕。简单的方法是定义标题模板,如下例所示,但是如何将字幕文本绑定到实际控件以便能够在代码中进行更改?如果唯一的选择是覆盖枢轴控制,请提供一些示例(如果存在)。

<phone:Pivot.HeaderTemplate>
    <DataTemplate>
         <Grid>
              <TextBlock Text="{Binding}" /> //header
              <TextBlock Text="{Binding}" /> //subtite
         </Grid>
    </DataTemplate>
</phone:Pivot.HeaderTemplate>

谢谢。

4

2 回答 2

2

我成功地做你想做的事,但我并不为解决方案感到自豪......

首先,我创建了一个包含 2 个字符串的对象:

public class Header
{
    public string Title { get; set; }
    public string Subtitle { get; set; }
}

然后在资源中的 XAML 中创建对象(或者您可以通过视图模型绑定它们)

<phone:PhoneApplicationPage.Resources>
    <poc:Header x:Key="FirstHeader" Title="first" Subtitle="first subtitle"/>
    <poc:Header x:Key="SecondHeader" Title="second" Subtitle="second subtitle"/>
</phone:PhoneApplicationPage.Resources>

绑定每个数据透视项上的对象:

<phone:PivotItem Header="{StaticResource FirstHeader}">

然后像这样设置 Pivot.HeaderTemplate 的样式:

<phone:Pivot.HeaderTemplate>
    <DataTemplate>
        <StackPanel Orientation="Vertical">
            <TextBlock Text="{Binding Title}" Foreground="White"/>
            <TextBlock Text="{Binding Subtitle}" FontSize="18" Foreground="White"/>
        </StackPanel>
    </DataTemplate>
</phone:Pivot.HeaderTemplate>

通过修改 Pivot 和 PivotItem 的行为可以实现更好的解决方案,但我没有成功更改 Pivot.HeaderTemplate 和 PivotItem 之间的绑定。

于 2013-11-13T16:28:47.347 回答
0

您可以尝试分别为每个项目定义标题,而不是为整个枢轴定义。如果您想让它适用于整个枢轴,您应该更改样式,并使用字幕属性对其进行扩展。

无论如何,如果您只想更改枢轴项目的标题,这是代码

<controls:Pivot Name="MainPivot">
    <controls:PivotItem x:Name="HomeMenuPivotItem">
        <controls:PivotItem.Header>
            <StackPanel>
                <TextBlock Text="Title"/>
                <TextBlock Text="Subtitle"/>
            </StackPanel>
        </controls:PivotItem.Header>
    </controls:PivotItem>
</controls:Pivot>
于 2013-11-14T13:34:34.627 回答