//第一次写博文,以后还请各位道友互相关照哈。废话不多说,直接进入正题。

相信大家对于如何在XAML添加应用程序栏应该很清楚,不清楚的话,可以打开新建个Pviot应用 就有系统自带的菜单栏。 本文主要讲的是如何在C#后台进行动态添加应用程序栏以及菜单栏最小化。

首先新建一个空白应用,然后在Gird下键入以下代码:

  1. <Pivot Name="pivot" SelectionChanged="Pivot_SelectChanged">
  2. <PivotItem Header="First">
  3.  
  4. </PivotItem>
  5.  
  6. <PivotItem Header="Second">
  7.  
  8. </PivotItem>
  9.  
  10. <PivotItem Header="Third">
  11.  
  12. </PivotItem>
  13. </Pivot>

然后在MainPage.xaml.cs定义3个菜单:

  1. CommandBar refresh;
  2. CommandBar add;
  3. CommandBar min;

之后,我们定一个方法PrepareAppBars()来实现应用程序栏,这个方法要在OnNavigatedTo()或者构造函数内或者页面加载内实现,这里我选择在OnNavigatedTo()内实现:

  1. protected override void OnNavigatedTo(NavigationEventArgs e)
  2. {
  3. // TODO: Prepare page for display here.
  4. PrepareAppBars();
  5. // TODO: If your application contains multiple pages, ensure that you are
  6. // handling the hardware Back button by registering for the
  7. // Windows.Phone.UI.Input.HardwareButtons.BackPressed event.
  8. // If you are using the NavigationHelper provided by some templates,
  9. // this event is handled for you.
  10. }

  

  1. private void PrepareAppBars()
  2. {
  3.  
  4. //Pivot第一个页面菜单栏
  5. refresh = new CommandBar();
  6. refresh.IsOpen = true;
  7. AppBarButton RefreshBtn = new AppBarButton() { Icon = new BitmapIcon() { UriSource = new Uri("ms-appx:///Assets/refresh.png") } };
  8. RefreshBtn.Label = "刷新";
  9. RefreshBtn.Click += RefreshBtn_Click;
  10. RefreshBtn.IsEnabled = true;
  11.  
  12. // 相似的第二个菜单
  13. AppBarButton SecondBtn = new AppBarButton() { Icon = new BitmapIcon() { UriSource = new Uri("ms-appx:///Assets/add.png") } };
  14. SecondBtn.Label = "添加";
  15. SecondBtn.Click += SecondBtn_Click;
  16. SecondBtn.IsEnabled = true;
  17.  
  18. AppBarButton secondCommand = new AppBarButton();
  19. secondCommand.Label = "菜单一";
  20. secondCommand.Click += secondCommand_Click;
  21.  
  22. AppBarButton secondCommand2 = new AppBarButton();
  23. secondCommand2.Label = "菜单二";
  24. secondCommand2.Click += secondCommand2_Click;
  25. refresh.SecondaryCommands.Add(secondCommand);
  26. refresh.SecondaryCommands.Add(secondCommand2);
  27.  
  28. refresh.PrimaryCommands.Add(RefreshBtn);
  29. refresh.PrimaryCommands.Add(SecondBtn);
  30.  
  31. //Pivot第二个页面菜单栏
  32. add = new CommandBar();
  33. add.IsOpen = true;
  34.  
  35. AppBarButton Pivot_SecondAppBar = new AppBarButton() { Icon = new BitmapIcon() { UriSource = new Uri("ms-appx:///Assets/add.png") } };
  36. Pivot_SecondAppBar.Label = "添加";
  37. Pivot_SecondAppBar.Click += Pivot_SecondAppBar_Click;
  38. SecondBtn.IsEnabled = true;
  39. add.PrimaryCommands.Add(Pivot_SecondAppBar);
  40.  
  41. //Pivot第三个页面菜单栏最小化
  42. min = new CommandBar();
  43. AppBarButton thirdCommand = new AppBarButton();
  44. thirdCommand.Label = "菜单三";
  45. thirdCommand.Click += thirdCommand_Click;
  46. min.SecondaryCommands.Add(thirdCommand);
  47.  
  48. min.ClosedDisplayMode = AppBarClosedDisplayMode.Minimal;
  49.  
  50. }

  接着,我们定义 应用程序栏的所有单机事件:

  1. void thirdCommand_Click(object sender, RoutedEventArgs e)
  2. {
  3. MessageDialog msg = new MessageDialog("菜单三");
  4. msg.ShowAsync();
  5. }
  6.  
  7. void Pivot_SecondAppBar_Click(object sender, RoutedEventArgs e)
  8. {
  9. MessageDialog msg = new MessageDialog("Pivot第二个页面添加");
  10. msg.ShowAsync();
  11. }
  12.  
  13. void SecondBtn_Click(object sender, RoutedEventArgs e)
  14. {
  15. MessageDialog msg = new MessageDialog("添加");
  16. msg.ShowAsync();
  17. }
  18.  
  19. void secondCommand2_Click(object sender, RoutedEventArgs e)
  20. {
  21. MessageDialog msg = new MessageDialog("菜单二");
  22. msg.ShowAsync();
  23. }
  24.  
  25. void secondCommand_Click(object sender, RoutedEventArgs e)
  26. {
  27. MessageDialog msg = new MessageDialog("菜单一");
  28. msg.ShowAsync();
  29. }
  30.  
  31. void RefreshBtn_Click(object sender, RoutedEventArgs e)
  32. {
  33. MessageDialog msg = new MessageDialog("刷新");
  34. msg.ShowAsync();
  35. }

  做完这些之后呢,我们就可以在Pivot_SelectChanged页面选择的时候加载指定的应用程序栏了:

  1. private void Pivot_SelectChanged(object sender, SelectionChangedEventArgs e)
  2. {
  3. switch (pivot.SelectedIndex)
  4. {
  5. case 0:
  6. BottomAppBar = refresh;
  7. break;
  8. case 1:
  9. BottomAppBar = add;
  10. break;
  11. case 2:
  12. BottomAppBar = min;
  13. break;
  14. }
  15. }

  

2015元旦第一弹——WP8.1应用程序栏(C#后台代码编写)的更多相关文章

  1. JVM第一弹

    JVM第一弹 基本概念 JVM是可运行java代码的假想计算机,包括一套字节码指令集,一组寄存器,一个栈,一个垃圾回收.堆和一个存储方法域.JVM是运行在操作系统之上的,它与硬件没有直接的交互. 运行 ...

  2. 微信小程序登录JAVA后台

    代码地址如下:http://www.demodashi.com/demo/12736.html 登录流程时序登录流程时序 具体的登录说明查看 小程序官方API 项目的结构图: springboot项目 ...

  3. Java基础-程序流程控制第一弹(分支结构/选择结构)

    Java基础-程序流程控制第一弹(分支结构/选择结构) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.if语句 1>.if语句的第一种格式 if(条件表达式){ 语句体: ...

  4. 我的长大app开发教程第一弹:Fragment布局

    在接下来的一段时间里我会发布一个相对连续的Android教程,这个教程会讲述我是如何从零开始开发“我的长大”这个Android应用. 在开始之前,我先来介绍一下“我的长大”:这是一个校园社交app,准 ...

  5. typecho流程原理和插件机制浅析(第一弹)

    typecho流程原理和插件机制浅析(第一弹) 兜兜 393 2014年03月28日 发布 推荐 5 推荐 收藏 24 收藏,3.5k 浏览 虽然新版本0.9在多次跳票后终于发布了,在漫长的等待里始终 ...

  6. 《ArcGIS Engine+C#实例开发教程》第一讲桌面GIS应用程序框架的建立

    原文:<ArcGIS Engine+C#实例开发教程>第一讲桌面GIS应用程序框架的建立 摘要:本讲主要是使用MapControl.PageLayoutControl.ToolbarCon ...

  7. Hadoop基础-MapReduce的工作原理第一弹

    Hadoop基础-MapReduce的工作原理第一弹 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在本篇博客中,我们将深入学习Hadoop中的MapReduce工作机制,这些知识 ...

  8. Spring Boot 第一弹,问候一下世界!!!

    持续原创输出,点击上方蓝字关注我吧 目录 前言 什么是Spring Boot? 如何搭建一个Spring Boot项目? 第一个程序 Hello World 依赖解读 什么是配置文件? 什么是启动类? ...

  9. 2015元旦来个炫的html5特效

    效果网址:http://keleyi.com/keleyi/phtml/html5/5.htm 代码: <!DOCTYPE html> <html xmlns="http: ...

随机推荐

  1. NSString与int和float的相互转换

    NSString *tempA = @"123"; NSString *tempB = @"456"; 1,字符串拼接 NSString *newString ...

  2. java常用api2

    calendar calendar=calendar.getInstance(); StringBuilder和C#的用法一样 hashSet无序的,不可重复 LInkedHashSet有序的,不可重 ...

  3. 高性能分布式应用开发中间件ICE介绍

    作为一个技术人员,你是否在为不断增长的数据量和日益复杂的业务逻辑而头疼不已,杂乱堆砌在一起的庞大业务让系统越来越脆弱,于是你想到了网格,想到了利用分布式来重组一个健壮的系统架构. 随后,RMI,EJB ...

  4. fiddler AutoResponder(文件代理)

    测试网站https://www.meishij.net/ 目标:使用fiddler完成图片的替换 1.首先找到图片地址,然后在fiddler中查找对应图片 2.将对应的图片请求拖入到fiddler的A ...

  5. 阿里云centos7.2自己安装mysql5.7远程不能访问解决方案

    版权声明:转载也行 https://blog.csdn.net/u010955892/article/details/72774920 最近,无意中看到阿里云服务器降价,所以一时手痒,买了一年的服务器 ...

  6. SharePoint 2010/2013 隐藏的速度下拉菜单列表项

    SharePoint 2010/2013 隐藏的速度下拉菜单列表项         有时为了防止一些用户编辑列表项.需要隐藏下拉菜单列表项.,仅仅须要添加一个内容编辑器控件,将css代码写入其HTML ...

  7. 【43.75%】【codeforces 688E】The Values You Can Make

    time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...

  8. RGB值得计算公式

    三原色分别为:红(Red).绿(Green).蓝(Blue). 颜色值=(Red)+(Green*256)+(Blue*256*256) //由三原色值合成颜色整数值 function ColorFr ...

  9. CUDA查询和选取设备信息

    CUDA查询设备信息 CUDA C中的cudaGetDeviceProperties函数可以很方便的获取到设备的信息,函数原型是: cudaError_t CUDARTAPI cudaGetDevic ...

  10. WolframAlpha 的使用

    WolframAlpha 1. 求解复杂方程组 a+b=−4ab+c=2ac=1 直接点开网站,在输入框中输入,a+b=-4;ab+c=2;ac=1;(逗号分割开来),