嵌套的Pivot控件

时间:2011-03-15 05:31:37

标签: c# silverlight windows-phone-7 pivot

是否可以在WP7中使用嵌套的Pivot控件。 就像我是一个支点1,2,3 在1里面,我想要页面a,b,c。 是否可以仅在MainPage.xaml中控制它?

我希望旧的枢轴1,2,3在点击1时消失,而是将a,b,c作为主枢轴标题。有可能吗?

1 个答案:

答案 0 :(得分:1)

这种情况通常是可能的。但是,我强烈建议不要这样做,因为它会让用户感到困惑,并会为你增加更多工作(根据枢轴而不是页面之间的处理导航)。所以,假设我有一个示例Pivot控件:

<controls:Pivot x:Name="HostPivot" Title="MY APPLICATION">
<controls:PivotItem x:Name="MainPivot" Header="first">
    <controls:Pivot x:Name="sPivot" Title="Secondary Pivot">
        <controls:PivotItem x:Name="sPivotItem" Header="inside1"></controls:PivotItem>
        <controls:PivotItem Header="inside2"></controls:PivotItem>
        <controls:PivotItem Header="inside3"></controls:PivotItem>
    </controls:Pivot>
</controls:PivotItem>

<controls:PivotItem x:Name="SecondaryPivot" Header="second"> 
</controls:PivotItem>
</controls:Pivot>

每当我尝试在第二个Pivot控件(使用活动主机)内导航时,HostPivot将拦截操作并移动到其中的下一个枢轴项而不是sPivot

在这种情况下该怎么办?检测操纵:

sPivot.ManipulationStarted += new EventHandler<ManipulationStartedEventArgs>(sPivot_ManipulationStarted);

因此,您最终将使用辅助替换主机数据块

void sPivot_ManipulationStarted(object sender, ManipulationStartedEventArgs e)
{
    if (MainPivot.Content != null)
    {
        MainPivot.Content = null;
        LayoutRoot.Children.Remove(HostPivot);
        LayoutRoot.Children.Add(sPivot);
    }
}

您必须从主机Pivot控件中第一个PivotItem的子控件集中删除辅助Pivot控件,并将其添加到主网格({{ 1}})。

这最终会引发一个问题 - 当你在单独的LayoutRoot权利之间导航显然更容易,更有效时,你真的想以这种方式(在枢轴之间)实施导航。