WP的Pivot控件很牛逼,但想要调整样式没有什么比较直观的方法。许多少年只会改HeaderTemplate,但要做到下面这种效果,HeaderTemplate是不够的。
首先,正确的方法是通过模板的样式来做。比如上面这张图的样式,就需要在App.xaml里定义自己的Pivot控件样式。下面的代码加在Application.Resources节点下,这样你的每一个页面就都能用到这个样式了。
<Style x:Key="DiaosbookPivotStyle" TargetType="phone:Pivot"> <Setter Property="Margin" Value="0"/> <Setter Property="Padding" Value="0"/> <Setter Property="Foreground" Value="{StaticResource PhoneForegroundBrush}"/> <Setter Property="Background" Value="Transparent"/> <Setter Property="ItemsPanel"> <Setter.Value> <ItemsPanelTemplate> <Grid/> </ItemsPanelTemplate> </Setter.Value> </Setter> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="phone:Pivot"> <Grid HorizontalAlignment="{TemplateBinding HorizontalAlignment}" VerticalAlignment="{TemplateBinding VerticalAlignment}"> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <Grid Background="#FF2B579A" CacheMode="BitmapCache" Grid.RowSpan="2" /> <Grid Background="{TemplateBinding Background}" CacheMode="BitmapCache" Grid.Row="2" /> <ContentPresenter Grid.Row="0" ContentTemplate="{TemplateBinding TitleTemplate}" Content="{TemplateBinding Title}" Margin="17,10,0,7" /> <primitives:PivotHeadersControl x:Name="HeadersListElement" Grid.Row="1" Margin="-3,0,0,13"/> <ItemsPresenter x:Name="PivotItemPresenter" Margin="{TemplateBinding Padding}" Grid.Row="2"/> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style>
别忘了把primitives的namespace定义好:
xmlns:primitives="clr-namespace:Microsoft.Phone.Controls.Primitives;assembly=Microsoft.Phone"
代码里面的TitleTemplate对应“diaosbook 阅读器”这一行,也就是Pivot的Title属性。PivotHeadersControl就是各Tab页的位置,里面的模板可以通过Pivot.HeaderTemplate定义。
最后,在要使用Pivot的页面里,给Pivot指定这个样式:
<phone:Pivot Foreground="White" FontSize="28" Margin="0,0,0,10" Style="{StaticResource DiaosbookPivotStyle}">...
这时候你会发现,Tab的字体变得超大,这时候可以通过Pivot.HeaderTemplate设置指定大小的字体:
<phone:Pivot.HeaderTemplate> <DataTemplate> <TextBlock Text="{Binding}" Foreground="White" FontSize="56"/> </DataTemplate> </phone:Pivot.HeaderTemplate>
如果你想控制Title的字体,也有办法,就是把Title属性单独拉出来:
<phone:Pivot.Title> <TextBlock Text="diaosbook 阅读器" FontSize="22"/> </phone:Pivot.Title>
至此,你就得到了一个和截图上一样的Pivot控件。