好想法!我不完全使用您的解决方案,但我受到了您的想法的启发。
这是我所做的:
1.创建一个StackPanel作为容器,设置上边距为负值,如Margin="0,-35,0,0"
2.添加一些TextBlocks来伪造Pviot Headers,设置您打算与Headers绑定的数据绑定。
3.设置TextBlocks Width = "Auto"
,添加一些右边的Margin,这样就不会太拥挤
注意:当第一个 TextBlock 代表当前的 PivotItem 时,其他的代表其他的——它们是未激活的。
4.对于未激活的PivotItems的TextBlocks,我们设置Foreground="#FF727272"
与激活的进行区分。并添加一个事件处理程序,例如Tap="GoToPivot2_Tap"
后面的简单代码:PivotRoot.SelectedItem = Pivot2;
<controls:Pivot x:Name="PivotRoot">
<controls:PivotItem x:Name="Pivot1">
<StackPanel Margin="0,-35,0,0" Orientation="Horizontal">
<TextBlock Text="{Binding Header1}" Width="Auto" Margin="0,0,25,0" FontSize="30"/>
<TextBlock Text="{Binding Header2}" Tap="GoToPivot2_Tap" Width="Auto" Margin="0,0,25,0" Foreground="#FF727272" FontSize="30"/>
<TextBlock Text="{Binding Header3}" Tap="GoToPivot3_Tap" Width="Auto" Margin="0,0,25,0" Foreground="#FF727272" FontSize="30"/>
</StackPanel>
</controls:PivotItem>
<controls:PivotItem x:Name="Pivot2">
<StackPanel Margin="0,-35,0,0" Orientation="Horizontal">
<TextBlock Text="{Binding Header2}" Width="Auto" Margin="0,0,25,0" FontSize="30"/>
<TextBlock Text="{Binding Header3}" Tap="GoToPivot3_Tap" Width="Auto" Margin="0,0,25,0" Foreground="#FF727272" FontSize="30"/>
<TextBlock Text="{Binding Header1}" Tap="GoToPivot1_Tap" Width="Auto" Margin="0,0,25,0" Foreground="#FF727272" FontSize="30"/>
</StackPanel>
</controls:PivotItem>
<controls:PivotItem x:Name="Pivot3">
<StackPanel Margin="0,-35,0,0" Orientation="Horizontal">
<TextBlock Text="{Binding Header3}" Width="Auto" Margin="0,0,25,0" FontSize="30"/>
<TextBlock Text="{Binding Header1}" Tap="GoToPivot1_Tap" Width="Auto" Margin="0,0,25,0" Foreground="#FF727272" FontSize="30"/>
<TextBlock Text="{Binding Header2}" Tap="GoToPivot2_Tap" Width="Auto" Margin="0,0,25,0" Foreground="#FF727272" FontSize="30"/>
</StackPanel>
</controls:PivotItem>
</controls:Pivot>
就是这样。
也许事件不如你的优雅,但也有效。