2015元旦第一弹——WP8.1应用程序栏(C#后台代码编写)

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

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

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

 <Pivot Name="pivot" SelectionChanged="Pivot_SelectChanged">
            <PivotItem Header="First">

            </PivotItem>

            <PivotItem Header="Second">

            </PivotItem>

            <PivotItem Header="Third">

            </PivotItem>
        </Pivot>

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

 CommandBar refresh;
 CommandBar add;
 CommandBar min;

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

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

  

  private void PrepareAppBars()
        {

            //Pivot第一个页面菜单栏
            refresh = new CommandBar();
            refresh.IsOpen = true;
            AppBarButton RefreshBtn = new AppBarButton() { Icon = new BitmapIcon() { UriSource = new Uri("ms-appx:///Assets/refresh.png") } };
            RefreshBtn.Label = "刷新";
            RefreshBtn.Click += RefreshBtn_Click;
            RefreshBtn.IsEnabled = true;

            // 相似的第二个菜单
            AppBarButton SecondBtn = new AppBarButton() { Icon = new BitmapIcon() { UriSource = new Uri("ms-appx:///Assets/add.png") } };
            SecondBtn.Label = "添加";
            SecondBtn.Click += SecondBtn_Click;
            SecondBtn.IsEnabled = true;

            AppBarButton secondCommand = new AppBarButton();
            secondCommand.Label = "菜单一";
            secondCommand.Click += secondCommand_Click;

            AppBarButton secondCommand2 = new AppBarButton();
            secondCommand2.Label = "菜单二";
            secondCommand2.Click += secondCommand2_Click;
            refresh.SecondaryCommands.Add(secondCommand);
            refresh.SecondaryCommands.Add(secondCommand2);

            refresh.PrimaryCommands.Add(RefreshBtn);
            refresh.PrimaryCommands.Add(SecondBtn);

           //Pivot第二个页面菜单栏
            add = new CommandBar();
            add.IsOpen = true;

            AppBarButton Pivot_SecondAppBar = new AppBarButton() { Icon = new BitmapIcon() { UriSource = new Uri("ms-appx:///Assets/add.png") } };
            Pivot_SecondAppBar.Label = "添加";
            Pivot_SecondAppBar.Click += Pivot_SecondAppBar_Click;
            SecondBtn.IsEnabled = true;
            add.PrimaryCommands.Add(Pivot_SecondAppBar);

            //Pivot第三个页面菜单栏最小化
            min = new CommandBar();
            AppBarButton thirdCommand = new AppBarButton();
            thirdCommand.Label = "菜单三";
            thirdCommand.Click += thirdCommand_Click;
            min.SecondaryCommands.Add(thirdCommand);

            min.ClosedDisplayMode = AppBarClosedDisplayMode.Minimal;

        }

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

   void thirdCommand_Click(object sender, RoutedEventArgs e)
        {
            MessageDialog msg = new MessageDialog("菜单三");
            msg.ShowAsync();
        }

        void Pivot_SecondAppBar_Click(object sender, RoutedEventArgs e)
        {
            MessageDialog msg = new MessageDialog("Pivot第二个页面添加");
            msg.ShowAsync();
        }

        void SecondBtn_Click(object sender, RoutedEventArgs e)
        {
            MessageDialog msg = new MessageDialog("添加");
            msg.ShowAsync();
        }

        void secondCommand2_Click(object sender, RoutedEventArgs e)
        {
            MessageDialog msg = new MessageDialog("菜单二");
            msg.ShowAsync();
        }

        void secondCommand_Click(object sender, RoutedEventArgs e)
        {
            MessageDialog msg = new MessageDialog("菜单一");
            msg.ShowAsync();
        }

        void RefreshBtn_Click(object sender, RoutedEventArgs e)
        {
            MessageDialog msg = new MessageDialog("刷新");
            msg.ShowAsync();
        }

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

  private void Pivot_SelectChanged(object sender, SelectionChangedEventArgs e)
        {
            switch (pivot.SelectedIndex)
            {
                case 0:
                    BottomAppBar = refresh;
                    break;
                case 1:
                    BottomAppBar = add;
                    break;
                case 2:
                    BottomAppBar = min;
                    break;
            }
        }

  

时间: 2024-11-09 01:58:21

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

2015元旦第一篇博文:Red5流媒体服务器搭建

今天是2015年的第一天,白天陪老婆孩子去BHG(华联)转了转,中午在九毛九吃了顿午饭,就这样过了元旦,虽然有点累,但是挺开心,北京今天的天气也比较给力,风和日丽,没有雾霾!现在是晚上十点,因为白天出去玩,老婆孩子有点累,现在已经熟睡,我不想就这样就结束2015的第一天,作为一个新的开始,我决定写2015年的第一篇博文.闲话少说,进入主题.流媒体这个概念在第一家公司就了解了,当时做一个Eleaning在线教育平台的时候,用Red5流媒体服务器技术,支持过视频模块的播放.下面就谈谈我对流媒体的认识

[WP8开发] WebBrowser控件与后台代码.cs简单的交互

大前提:我目前测试的环境是Windows Phone 8.1 Silverlight,所以控件是WebBrowser,而不是WebView. 做项目可能要用到网页与后台代码的交互问题,因为可能考虑到跨平台问题,所以公司的网页里某些链接需要客户端自行处理. 有如下HTML示例代码(重要部分): 1 <!--列表标题--> 2 <div class="am-list-news-bd"> 3 <ul class="am-list"> 4

2015, 年终 第一弹

在非互联网公司做互联网,累.很累.伴随着是对互联网平台认知的误区.什么是用户体验?    用户使用产品过程中建立起来的纯主观感受:这是用户体验,它的前提是"产品",没有一个好的互联网产品谈何用户体验?    这也是运营推广人员的一个错误认知,当呈现给你们的是一个稳定良性的产品时,你可以肆意的谈用户体验:当呈现的是一个堆砌或者是不稳定的产品时,首要内容不是什么用户体验,无人访问啊,是要考虑它的合理性.完整性.正确性.专业性.安全性该如何更好的呈现.开发团队身边总有抱怨平台的这个问题.那个

JVM第一弹

JVM第一弹 基本概念 JVM是可运行java代码的假想计算机,包括一套字节码指令集,一组寄存器,一个栈,一个垃圾回收.堆和一个存储方法域.JVM是运行在操作系统之上的,它与硬件没有直接的交互. 运行过程 我们都知道Java代码源文件,通过编译器能够产生相应的.Class字节码文件,而字节码文件又通过Java虚拟机中的解释器,编译成特定机器上的机器码. ① Java源文件 --> 编译器 --> 字节码文件② 字节码文件 --> JVM --> 机器码 每种平台的解释器是不同的,但

2015第一弹:调试自己,挖掘自己的最强手艺

先祝大家新年快乐.为此文做一个标记,算是阳历2015年第一篇文章吧.写此文与大家共勉. 对于原本的节奏是,每两天出一篇原创文,可到了去年年底这个节奏被打乱了,原因有几个,我做一下总结,顺便也是给即将创业或正在创业或想创业或创过业的童鞋参考下. (一)管理者不能写代码的真原因 一般像我这种创业期间的.以程序员身份做老板的高爆发力(风险也巨高)小企业要想活下去,只有两个字"省钱",往往省钱的方式就是自己有时也需要扑到一线工作.当然,这里强烈不建议公司的管理者扑到一线,原因就几个: 1.你扑

The Internet Communications Engine (Ice) 跨平台异构通讯方案 第一弹-ICE简介

.net中的通讯方案很多,从.net Remoting,MSMQ,Webservice,WSE,WCF等等,他们都有一个特点,易用,但是都不能跨语种异构,如果你服务端要用java开发,客户端用C#开发,或者其它语言譬如C++, Python,PHP, Ruby, Objective-C,等等,那么.net提供的解决方案将不再有效.现在,隆重推出跨平台异构方案ICE.ICE官网:http://www.zeroc.com/ice.html 简介:The Internet Communications

你好,博客园!!第一弹~局域网下的简易聊天室,socket与多线程简结

发觉博客园里面关于这些基本知识点的详细内容真是应有尽有,所以这里的随笔就不再重复了,就积累一下简单的用法-- 1.Socket 最近学网络编程,也就是Socket,套接字,一个用来建立链接传输数据的工具. 数据传输发生在"客户端"与"服务端"之间,下面是一种建立连接传输数据的简单方法: (1)客户端 1 try{ 2 //服务端ip 3 String ip = "127.0.0.1"; 4 //服务器端口 5 int port = 5000; 6

【数据库优化(持续更新)】--第一弹设计优化

前言 数据库是程序的仓库,也是程序中最脆弱的一部分,因为它的脆弱性和重要性,所以需要专门进行管理和优化.在如今的网络化的时代更加需要数据库的灵活和快捷,一个高效的数据库能够使程序运行效率更快,提高程序的运行效率.但往往对数据库的设计达不到我们想要的效果,所以数据库的优化显得尤为重要.该系列文章正是考虑大数据量的当今如何才能让数据库的设计更加灵活,数据检索.操作更加高效展开的讨论,其中涉及到的优化方法是在笔者长期的开发经验以及其它有关数据库优化的文章基础上进行总结的,如果有异议还请指出. 数据

Python学习第一弹——Python环境搭建

一.Python简介: Python,是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年.Python语法简洁而清晰,具有丰富和强大的类库.它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起.常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用