当 PhoneApplicationPage 方向更改以适应不同的屏幕空间时,我正在尝试更改 Pivot 的 HeaderTemplate。我试图实现的最终效果是缩小横向中的 Pivot Header FontSize 以为更多垂直内容腾出空间。
模板在 XAML 中声明为资源;
<phone:PhoneApplicationPage.Resources>
<DataTemplate x:Key="landscapePivotTitleTemplate">
<TextBlock Text="" Height="0"/>
</DataTemplate>
<DataTemplate x:Key="portraitPivotTitleTemplate">
<TextBlock Text="{Binding}" />
</DataTemplate>
<DataTemplate x:Key="portraitPivotHeaderTemplate">
<TextBlock Text="{Binding}" />
</DataTemplate>
<DataTemplate x:Key="landscapePivotHeaderTemplate">
<TextBlock Text="{Binding}" FontSize="{StaticResource PhoneFontSizeSmall}" />
</DataTemplate>
</phone:PhoneApplicationPage.Resources>
我在 OrientationChanged 的处理程序中从页面的 FrameworkElement.Resource ResourceDictionary 分配 DataTemplate;
void MainPage_OrientationChanged(object sender, OrientationChangedEventArgs e)
{
if (e.Orientation == PageOrientation.LandscapeLeft || e.Orientation == PageOrientation.LandscapeRight)
{
pivot.HeaderTemplate = (DataTemplate)Resources["landscapePivotHeaderTemplate"];
pivot.TitleTemplate = (DataTemplate)Resources["landscapePivotTitleTemplate"];
}
else
{
pivot.HeaderTemplate = (DataTemplate)Resources["portraitPivotHeaderTemplate"];
pivot.TitleTemplate = (DataTemplate)Resources["portraitPivotTitleTemplate"];
}
}
使用上述模板,标题通过分配给 TitleTemplate 被正确隐藏。但是,似乎只能设置一次 Header 模板 - 之后对 HeaderTemplate 的分配只有通过添加新的 PivotItem 才能生效。有没有更好的方法来解决这个问题?