VS2013 - Campaign Image_500.jpg

之前在 WP8.1 开发的时候遇到过一个问题:滑动 Pivot 之后如何改变底部菜单(CommandBar)的内容,整理了一份资料出来。

先拖个 CommandBar 出来,或者直接用下面的代码。

<Page.BottomAppBar>
    <CommandBar>
        <AppBarButton Icon="Accept" Label="确认"/>
        <AppBarButton Icon="Cancel" Label="取消"/>
        <CommandBar.SecondaryCommands>
                       
        </CommandBar.SecondaryCommands>
    </CommandBar>
</Page.BottomAppBar>

同时,我们设置 Pivotx:name="MyPivot",然后我们可以通过PivotSelectionChanged事件来动态改变CommandBar的内容。
MyPivot添加事件:SelectionChanged="MyPivot_SelectionChanged"
然后在后台添加动态更改CommandBar内容的处理程序:

private void MyPivot_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    // 取得 MyPivot 当前所在页面的索引
    int index = MyPivot.SelectedIndex;
    CommandBar commandbar = ((CommandBar)this.BottomAppBar);
    // 清空原有的二级菜单项目
    commandbar.SecondaryCommands.Clear();

    switch (index)
    {
        // Pivotitem 0
        case 0:
            commandbar.SecondaryCommands.Add(new AppBarButton() { Label = "Pivotitem 0.0" });
            commandbar.SecondaryCommands.Add(new AppBarButton() { Label = "Pivotitem 0.1" });
            break;
        // Pivotitem 1
        case 1:
            commandbar.SecondaryCommands.Add(new AppBarButton() { Label = "Pivotitem 1.0" });
            commandbar.SecondaryCommands.Add(new AppBarButton() { Label = "Pivotitem 1.1" });
            break;
        default:
            break;
    }
}

看一下运行效果:
pivot.gif

等等,这样菜单项是增加了,可是点击菜单没反应啊?
好,那添加一个Click事件吧

commandbar.SecondaryCommands.Add(new AppBarButton() { Label = "Pivotitem 0.0" Click = "Pivotitem00_Click" });

然而这样编译的时候就会报错,C#并没有这样的写法,那怎么办呢?我们可以采用下面的方法:

// 设置 Pivotitem 0.0 菜单项,其他项目同理
AppBarButton Pivotitem00 = new AppBarButton();
Pivotitem00.Label = "Pivotitem 0.0";
Pivotitem00.Click += Pivotitem00_Click;
commandbar.SecondaryCommands.Add(Pivotitem00);

然后添加Click事件

private void Pivotitem00_Click(object sender, object e)
{
    // Code here
    new MessageDialog("Pivotitem 0.0 was clicked!").ShowAsync();
    // 对了,要用到 MessageDialog 类的话需要 using Windows.UI.Popups;
}

看一下运行结果:
pivot00_click.gif

完美运行!


参考资料:MSDN 社区

标签: windows phone

添加新评论