在Windows Phone 7应用程序中,我使用Pivot for UI。作为Pivot的一个项目,插入XAML页面,如下:
<Pivot_Item>
<myviews:a_page.xaml/>
</Pivot_Item>
应用程序栏 - 标准模板 - 仅在该页面中使用,因为整个Pivot不需要它。但这不起作用。目前我只能激活每个Pivot项目的栏或将其用于单独的非轴心页面。
答案 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,但这是非标准行为。作为一般规则,使用非标准行为的用户通常不会感到惊讶。
您尝试这样做表明您的应用程序的不同架构可能更合适。如果你真的必须这样做,请确保你理解:通常没有这样做的原因;这样做的含义;什么是替代品;以及为什么替代方案不合适。