WP8.1 滑动 Pivot 更改底部菜单项目
之前在 WP8.1 开发的时候遇到过一个问题:滑动 Pivot 之后如何改变底部菜单(CommandBar
)的内容,整理了一份资料出来。
先拖个 CommandBar
出来,或者直接用下面的代码。
<Page.BottomAppBar>
<CommandBar>
<AppBarButton Icon="Accept" Label="确认"/>
<AppBarButton Icon="Cancel" Label="取消"/>
<CommandBar.SecondaryCommands>
</CommandBar.SecondaryCommands>
</CommandBar>
</Page.BottomAppBar>
同时,我们设置 Pivot
的 x:name="MyPivot"
,然后我们可以通过Pivot
的SelectionChanged
事件来动态改变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;
}
}
看一下运行效果:
等等,这样菜单项是增加了,可是点击菜单没反应啊?
好,那添加一个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;
}
看一下运行结果:
完美运行!
参考资料:MSDN 社区