我想创建带有两个文本块的自定义数据透视表头:一个用于标题标题,另一个用于字幕,或者可以为每个数据透视页添加相同的静态字幕。 简单的方法是定义标题模板,如下面的示例,但我如何将字幕文本绑定到实际控件,以便能够在代码中更改?如果唯一的选择是覆盖枢轴控制,请提供一些示例(如果存在)。
<phone:Pivot.HeaderTemplate>
<DataTemplate>
<Grid>
<TextBlock Text="{Binding}" /> //header
<TextBlock Text="{Binding}" /> //subtite
</Grid>
</DataTemplate>
</phone:Pivot.HeaderTemplate>
感谢。
答案 0 :(得分:2)
我成功地做了你想做的事,但我并不为解决方案感到自豪......
首先,我创建了一个带2个字符串的对象:
public class Header
{
public string Title { get; set; }
public string Subtitle { get; set; }
}
然后在资源中创建XAML中的对象(或者可以通过viewmodel绑定它们)
<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>
绑定每个pivotitem上的对象:
<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之间的绑定。
答案 1 :(得分: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>