Silverlight 使用模板时流过数据透视项标题的页面内容
我使用Blend来修改透视项目标题的模板。结果看起来不错,但我不明白结果是什么 当我将数据绑定到数据透视项时,问题就出现了,因为数据透视项似乎漂浮在标题上。我可以通过设置一个边距来解决这个问题,但我不想对每个透视项都这样做,而是想了解样式标记,并希望能在那里修复它Silverlight 使用模板时流过数据透视项标题的页面内容,silverlight,windows-phone-7,xaml,pivotitem,Silverlight,Windows Phone 7,Xaml,Pivotitem,我使用Blend来修改透视项目标题的模板。结果看起来不错,但我不明白结果是什么 当我将数据绑定到数据透视项时,问题就出现了,因为数据透视项似乎漂浮在标题上。我可以通过设置一个边距来解决这个问题,但我不想对每个透视项都这样做,而是想了解样式标记,并希望能在那里修复它 <Style x:Key="PivotStyle1" TargetType="controls:Pivot"> <Setter Property="Margin" Value="0"/> <Setter
<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>
按照Shawn下面的建议设置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>
如果您只是试图修改标题,只需修改标题即可
<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>
因此,在我的博客上提供更多信息这有助于我更好地理解这个问题,以及blend的xaml在做什么。我正在设置背景色(实际上是渐变色),并按照您的建议使用headertemplate,这会导致页眉之间出现间隙。我会仔细考虑一下这个问题,看看我是否能找到缩小差距的办法。谢谢B根据您更新的问题,我已将我的答案更新为HelpBeauty,谢谢!所有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"