在枢轴控件中使用许多应用程序栏

时间:2013-07-31 05:49:19

标签: c# wpf silverlight xaml

我正在尝试创建一个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;
        }
    }

但它似乎不起作用。 我的编程水平仍然是初学者,如果答案详细,我们将不胜感激。 谢谢。

3 个答案:

答案 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)

嘿,好像很晚,但我遵循了相同的msdn教程。您可能无法获得所需的结果,因为您需要使用透视项目附加选择更改事件。

<controls:Pivot SelectionChanged="Pivot_SelectionChanged_2" >

</controls:Pivot>