是否可以仅为一个Pivot项目显示应用程序栏?

时间:2011-05-15 10:04:06

标签: windows-phone-7

在Windows Phone 7应用程序中,我使用Pivot for UI。作为Pivot的一个项目,插入XAML页面,如下:

<Pivot_Item>
<myviews:a_page.xaml/>
</Pivot_Item>

应用程序栏 - 标准模板 - 仅在该页面中使用,因为整个Pivot不需要它。但这不起作用。目前我只能激活每个Pivot项目的栏或将其用于单独的非轴心页面。

4 个答案:

答案 0 :(得分:13)

据我所知 - ApplicationBar与您的Page相关联,但Pivot只是您Page的控件。因此,无论显示哪个ApplicationBar标签,都会为整个Page分配Pivot

您可以通过在资源部分中定义不同的应用栏来实现:

<phone:PhoneApplicationPage.Resources> 

    <shell:ApplicationBar x:Key="firstPivotTabApplicationBar" IsVisible="True"> 
        ...
    </shell:ApplicationBar> 

    <shell:ApplicationBar x:Key="secondPivotTabApplicationBar" IsVisible="True"> 
        ...
    </shell:ApplicationBar> 

</phone:PhoneApplicationPage.Resources>

在枢轴控件中处理SelectionChanged事件:

private void MainPagePivot_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{
    string pivotResource;

    switch (_mainPagePivot.SelectedIndex)
    {
        case 0:
            pivotResource = "firstPivotTabApplicationBar";
            break;

        case 1:
            pivotResource = "secondPivotTabApplicationBar";
            break;

        default:
            throw new ArgumentOutOfRangeException();
    }

    ApplicationBar = (ApplicationBar)Resources[pivotResource]; 
} 

答案 1 :(得分:11)

最简单的方法就是处理Pivot的LoadingPivotItem事件。

为PivotItem指定一个名称:

<Pivot_Item Name="myPivotItem">
<myviews:a_page.xaml/>
</Pivot_Item>

在代码中:

private void pivotMain_LoadingPivotItem(object sender, PivotItemEventArgs e)
{
     if (e.Item == myPivotItem) 
        ApplicationBar.IsVisible = true;
     else
        ApplicationBar.IsVisible = false;  
}

答案 2 :(得分:3)

试试这个...将以下函数添加到您的PivotPage的xaml.cs文件中,并确保添加SelectionChanged事件以使用此函数...

private void Pivot_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    switch (((Pivot)sender).SelectedIndex)
        {
            case 0:
                ApplicationBar.IsVisible = true;
                break;

            case 1:
                ApplicationBar.IsVisible = false;
                break;
    }
}

根据要显示应用栏的枢轴项目更改大小写。适合我,并处理应用程序栏的最小化。

答案 3 :(得分:2)

虽然只有在显示特定的PivotItem时才可以加载ApplicationBar,但这是非标准行为。作为一般规则,使用非标准行为的用户通常不会感到惊讶。

您尝试这样做表明您的应用程序的不同架构可能更合适。如果你真的必须这样做,请确保你理解:通常没有这样做的原因;这样做的含义;什么是替代品;以及为什么替代方案不合适。