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

87e*_*ent 7 windows-phone-7

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

<Pivot_Item>
<myviews:a_page.xaml/>
</Pivot_Item>
Run Code Online (Sandbox Code Playgroud)

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

oxi*_*min 13

据我所知 - ApplicationBar与你有关Page,但Pivot只是对你的控制Page.因此,无论显示哪个选项卡,ApplicationBar都会为整个分配.PagePivot

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

<phone:PhoneApplicationPage.Resources> 

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

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

</phone:PhoneApplicationPage.Resources>
Run Code Online (Sandbox Code Playgroud)

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]; 
} 
Run Code Online (Sandbox Code Playgroud)


key*_*rdP 11

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

为PivotItem指定一个名称:

<Pivot_Item Name="myPivotItem">
<myviews:a_page.xaml/>
</Pivot_Item>
Run Code Online (Sandbox Code Playgroud)

在代码中:

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