我正在尝试创建一个Pivot控件,并且要获取Pivot控件的项目,我想要关联一个不同的ApplicationBar。我尝试在MSDN中关注this演练,但似乎此代码中存在错误:
private void Pivot_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
switch (((Pivot)sender).SelectedIndex)
{
case 0:
ApplicationBar = ((ApplicationBar)Application.Current.Resources["CountingAppBar"]);
break;
case 1:
ApplicationBar = ((ApplicationBar)Application.Current.Resources["SavingAppBar"]);
break;
}
}
错误是ApplicationBar是一个类并且它被用作变量,所以我尝试在switch语句之前创建一个实例,这就是我所做的:
private void Pivot_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
ApplicationBar appBar;
switch (((Pivot)sender).SelectedIndex)
{
case 0:
appBar = ((ApplicationBar)Application.Current.Resources["CountingAppBar"]);
break;
case 1:
appBar = ((ApplicationBar)Application.Current.Resources["SavingAppBar"]);
break;
}
}
但它似乎不起作用。 我的编程水平仍然是初学者,如果答案详细,我们将不胜感激。 谢谢。
答案 0 :(得分:3)
这很简单......你可以为每个枢轴项目使用不同的appbar。试试下面的代码
<phone:Pivot>
<i:Interaction.Triggers>
<appBarUtils:SelectedPivotItemChangedTrigger>
<appBarUtils:SelectedPivotItemChangedTrigger.SelectionMappings>
<appBarUtils:SelectionMapping SourceIndex="0" TargetIndex="0"/>
</appBarUtils:SelectedPivotItemChangedTrigger.SelectionMappings>
<appBarUtils:SwitchAppBarAction>
<appBarUtils:AppBar Id="0" BackgroundColor="{StaticResource AppBarBg}" ForegroundColor="{StaticResource Foreground}">
<appBarUtils:AppBarButton IconUri="/Assets\Images\appbar.home.png" Text="home" Command="{Binding HomeNavigationCommand}"/>
</appBarUtils:AppBar>
<appBarUtils:AppBar Id="1" BackgroundColor="{StaticResource AppBarBg}" ForegroundColor="{StaticResource Foreground}">
<appBarUtils:AppBarButton IconUri="/Assets\Images\appbar.home.png" Text="home" Command="{Binding HomeNavigationCommand}"/>
</appBarUtils:AppBar>
<appBarUtils:AppBar Id="2" BackgroundColor="{StaticResource AppBarBg}" ForegroundColor="{StaticResource Foreground}">
<appBarUtils:AppBarButton IconUri="/Assets\Images\appbar.home.png" Text="home" Command="{Binding HomeNavigationCommand}"/>
<appBarUtils:AppBarButton IconUri="/Assets\Images\appbar.money.png" Text="collection" Command="{Binding CollectionPageCommand}"/>
<appBarUtils:AppBarButton IconUri="/Assets\Images\appbar.check.rest.png" Text="ok" Command="{Binding OrderConfirmationButtonCommand}"/>
</appBarUtils:AppBar>
<appBarUtils:AppBar Id="3" BackgroundColor="{StaticResource AppBarBg}" ForegroundColor="{StaticResource Foreground}">
<appBarUtils:AppBarButton x:Name="ConfirmationAppBarButton" IconUri="/Assets\Images\appbar.cancel.rest.png" Text="cancel" Command="{Binding OrderCancelButtonCommand}"/>
<appBarUtils:AppBarButton IconUri="/Assets\Images\appbar.check.rest.png" Text="ok" Command="{Binding OrderConfirmationButtonCommand}" IsEnabled="{Binding Model.EnableCheck,Mode=TwoWay}" />
</appBarUtils:AppBar>
</appBarUtils:SwitchAppBarAction>
</appBarUtils:SelectedPivotItemChangedTrigger>
</i:Interaction.Triggers>
</phone:Pivot>
答案 1 :(得分:1)
http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh394044%28v=vs.105%29.aspx
为什么不使用一个ApplicationBar并根据所选的Pivot控件添加或删除ApplicationBarButtons?考虑到许多应用程序都这样做,应该非常简单。
PS:根据个人经验,通过C#中的代码添加您的应用程序栏...我在更改XAML应用程序栏时遇到了问题。
答案 2 :(得分:0)
<controls:Pivot SelectionChanged="Pivot_SelectionChanged_2" >
</controls:Pivot>