2012-05-22 46 views
0

我使用了Blend來修改我的透視項目標題的模板。結果看起來不錯,但我不理解最終的標記。頁面內容在使用模板時流過PivotItem標題

當我將數據綁定到我的數據透視項時,出現問題,因爲它看起來漂浮在標題上。我可以通過設置邊距來解決這個問題,但不是爲每個數據透視表項都做這件事,而是希望瞭解樣式標記並希望將其修復。

<Style x:Key="PivotStyle1" TargetType="controls:Pivot"> 
<Setter Property="Margin" Value="0"/> 
<Setter Property="Padding" Value="0"/> 
<Setter Property="Background" Value="White"/> 
<Setter Property="ItemsPanel"> 
    <Setter.Value> 
     <ItemsPanelTemplate> 
      <Grid/> 
     </ItemsPanelTemplate> 
    </Setter.Value> 
</Setter> 
<Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="controls:Pivot"> 
      <Grid HorizontalAlignment="{TemplateBinding HorizontalAlignment}" VerticalAlignment="{TemplateBinding VerticalAlignment}"> 
       <Grid.RowDefinitions> 
        <RowDefinition Height="Auto"/> 
        <RowDefinition Height="Auto"/> 
        <RowDefinition Height="*"/> 
       </Grid.RowDefinitions> 
       <Grid CacheMode="BitmapCache" Grid.RowSpan="2" > 
        <Grid.Background> 
         <LinearGradientBrush EndPoint="0.5,1" MappingMode="RelativeToBoundingBox" StartPoint="0.5,0"> 
          <GradientStop Color="#FFD7E9F1"/> 
          <GradientStop Color="#FF1BA1E2" Offset="1"/> 
         </LinearGradientBrush> 
        </Grid.Background> 
       </Grid> 
       <Grid Background="{TemplateBinding Background}" CacheMode="BitmapCache" Grid.Row="2" /> 
       <ContentPresenter ContentTemplate="{TemplateBinding TitleTemplate}" 
        Content="{TemplateBinding Title}" Margin="24,17,0,-7"/> 
       <controlsPrimitives:PivotHeadersControl x:Name="HeadersListElement" Grid.Row="1" Foreground="White" /> 
       <ItemsPresenter x:Name="PivotItemPresenter" Margin="0,2,0,8" Grid.RowSpan="3"/> 
      </Grid> 
     </ControlTemplate> 
    </Setter.Value> 
</Setter> 

設定Pivot.HeaderTemplate肖恩下面表明要簡單得多,但是在標題項目之間的背景顏色的間隙的效果。

<controls:Pivot> 
     <controls:Pivot.HeaderTemplate> 
      <DataTemplate> 
       <StackPanel> 
        <StackPanel.Background> 
         <LinearGradientBrush EndPoint="0.5,1" MappingMode="RelativeToBoundingBox" StartPoint="0.5,0"> 
          <GradientStop Color="#FFD7E9F1"/> 
          <GradientStop Color="#FF1BA1E2" Offset="1"/> 
         </LinearGradientBrush> 
        </StackPanel.Background> 

        <TextBlock Text="{Binding}" FontSize="{StaticResource PhoneFontSizeExtraExtraLarge}" Foreground="White" /> 

       </StackPanel> 
      </DataTemplate> 
     </controls:Pivot.HeaderTemplate> 

回答

2

如果你只是想修改標題,只需修改頁眉

<controls:Pivot> 
    <controls:Pivot.HeaderTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding}" FontSize="{StaticResource PhoneFontSizeExtraExtraLarge}" 
         Margin="24,17,0,-7" Foreground="White" /> 
     </DataTemplate> 
    </controls:Pivot.HeaderTemplate> 
    <controls:PivotItem Title="item one"/> 
</controls:Pivot> 

根據您最新的更新,我看你想要做什麼。以下添加到您的網頁資源

  <Style TargetType="controlsPrimitives:PivotHeadersControl"> 
       <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate TargetType="controlsPrimitives:PivotHeadersControl"> 
          <Grid> 
           <Grid.Background> 
            <LinearGradientBrush EndPoint="0.5,1" MappingMode="RelativeToBoundingBox" StartPoint="0.5,0"> 
             <GradientStop Color="#FFD7E9F1"/> 
             <GradientStop Color="#FF1BA1E2" Offset="1"/> 
            </LinearGradientBrush> 
           </Grid.Background> 
           <Canvas x:Name="Canvas"> 
            <ItemsPresenter/> 
           </Canvas> 
          </Grid> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
      </Style> 

你需要以下命名空間中定義

xmlns:controlsPrimitives="clr-namespace:Microsoft.Phone.Controls.Primitives;assembly=Microsoft.Phone.Controls" 

因此,更多的信息在我的博客www.VisuallyLocated.com

+0

這有助於我理解這個問題越來越什麼來自混合的xaml正在做。我設置背景顏色(實際上是一個漸變)並使用headertemplate,因爲您建議在標題之間產生空隙。我會仔細研究一下,看看我能否弄清楚如何縮小差距。謝謝! – earthling

+0

關於您更新的問題,我已經更新了我的答案,以幫助 –

+0

美麗,謝謝!所有的pivot標題都會使用該模板嗎? – earthling

相關問題