初始化后更改Pivot的HeaderTemplate

时间:2012-04-04 09:59:49

标签: windows-phone-7

当PhoneApplicationPage方向更改为容纳不同的屏幕空间时,我正在尝试更改Pivot的HeaderTemplate。我想要实现的最终效果是缩小Landscape中的Pivot Header FontSize,为更多垂直内容腾出空间。

模板在XAML中声明为Resources;

<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的处理程序中从Page的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正确隐藏Title。但是,看起来只能设置Header模板一次 - 而后续的HeaderTemplate赋值只能通过添加新的PivotItem来实现。有没有更好的方法来解决这个问题?

0 个答案:

没有答案