在手机APP应用当中,我们往往会想某些操作能够进行快速访问或者能够持续显示用户信息的情况,比如像做泡泡堂游戏右边区域玩家信息

在wp7,wp8中为我们提供了ApplicationBar这样的控件来创建一个应用程序栏,以便为用户提供对应用程序最常见任务的快速访问,

1、应用程序栏用户界面

  默认的应用程序栏是位于手机屏幕底部的一行图标按钮和一个省略号。我们可以点击省略号以显示图标按钮和菜单项。而且,当手机更改方向时,应用程序栏会自动调整。当手机处于横向时,应用程序栏会垂直出现在屏幕的一侧。如下图

  

2、应用程序栏开发

使用应用栏有两种创建方式

      一种:使用XAML方式(不需要引用命名空间,默认已经引用 xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone")

      第二种:使用后台代码的方式创建需要引用以下命名空间

        命名空间:  Microsoft.Phone.Shell

          程序集:Microsoft.Phone(位于 Microsoft.Phone.dll 中)

好了,多的不说了,光说不练假把式,下面我们通过两种方式来创建应用栏

Demo1:

       创建XamlDemo.xaml页面,页面代码如下:

 <!--LayoutRoot is the root grid where all page content is placed-->
   
            <!--
            ApplicationBar - 应用程序栏
                Mode - 应用程序栏的样式。ApplicationBarMode.Default:默认(显示图标);ApplicationBarMode.Minimized:最小化(右侧有3个圆点,用于提示单击可弹出 ApBar)
                IsVisible - 是否显示 appbar
                IsMenuEnabled - 是否显示 appbar的 MenuItem
                BackgroundColor - appbarAppBar 的背景色
                ForegroundColor - appbar的前景色
       
            ApplicationBarIconButton - appbar的 IconButon
                IconUri - 按钮图标的地址
                Text - 用于描述按钮功能的文本
                Click - 单击按钮后所触发的事件
       
            ApplicationBarMenuItem - ApBar 的 MenuItem
                Text - 菜单项的文本
                Click - 单击菜单项后所触发的事件
        -->
    <phone:PhoneApplicationPage.ApplicationBar>
        <shell:ApplicationBar IsVisible="True" IsMenuEnabled="True" x:Name="appbar">
         <shell:ApplicationBar.MenuItems>
          <shell:ApplicationBarMenuItem IsEnabled="True" Text="1"/>
          <shell:ApplicationBarMenuItem IsEnabled="True" Text="2"/>
         </shell:ApplicationBar.MenuItems>
         <shell:ApplicationBarIconButton IconUri="/Assets/AppBar/Windows.png" IsEnabled="True" Text="微软" Click="ApplicationBarIconButton_Click"/>
            <shell:ApplicationBarIconButton IconUri="/Assets/AppBar/Cell tower.png" IsEnabled="True" Text="安卓"/>
            <shell:ApplicationBarIconButton IconUri="/Assets/AppBar/Apple.png" IsEnabled="True" Text="苹果"/>
            <shell:ApplicationBarIconButton IconUri="/Assets/AppBar/Marker.png" IsEnabled="True" Text="定位"/>
        </shell:ApplicationBar>
    </phone:PhoneApplicationPage.ApplicationBar>

Demo2:

上一个简单的例子通过XAML语言创建应用栏,下面我们通过Code的方式,实现和上一个案例一样的效果,我们创建CodeApplicationBar.xaml页面,在XAML页面无需写任何代码,我们通过后台代码CodeApplicationBar.xaml.cs来实现

public CodeApplicationBar()         {

InitializeComponent();

ApplicationBar  = new ApplicationBar();

//默认样式

ApplicationBar.Mode = ApplicationBarMode.Default;

//透明度

ApplicationBar.Opacity = 1.0;

//是否显示

ApplicationBar.IsVisible = true;

//是否启用菜单

ApplicationBar.IsMenuEnabled = true;

//创建ApplicationBarIconButton

ApplicationBarIconButton appBarBtn_Microsoft = new ApplicationBarIconButton();

appBarBtn_Microsoft.IconUri = new Uri("/Assets/AppBar/Windows.png", UriKind.Relative);

appBarBtn_Microsoft.IsEnabled = true;

appBarBtn_Microsoft.Text = "微软";

appBarBtn_Microsoft.Click +=(sender, e) =>

{

MessageBox.Show("you click Mircosoft,Windows Phone We are Come");

};

ApplicationBarIconButton appBarBtn_Android = new ApplicationBarIconButton();

appBarBtn_Android.IconUri = new Uri("/Assets/AppBar/Cell tower.png", UriKind.Relative);

appBarBtn_Android.IsEnabled = true;

appBarBtn_Android.Text = "安卓";

ApplicationBarIconButton appBarBtn_Apple = new ApplicationBarIconButton();

appBarBtn_Apple.IconUri = new Uri("/Assets/AppBar/Apple.png", UriKind.Relative);

appBarBtn_Apple.IsEnabled = true;

appBarBtn_Apple.Text = "苹果";

ApplicationBar.Buttons.Add(appBarBtn_Microsoft);

ApplicationBar.Buttons.Add(appBarBtn_Android);

ApplicationBar.Buttons.Add(appBarBtn_Apple);

}

  

3、应用程序栏属性

      ApplicationBar的属性如下(摘自MSDN):红色为比较常用的属性

      

  名称 说明
BackgroundColor 获取或设置应用程序栏的背景颜色。
Buttons 获取应用程序栏上显示的图标按钮列表。
DefaultSize 获取当 Mode 属性设置为 Default 时应用程序扩展到页面的距离。
ForegroundColor 获取或设置应用程序栏的前景颜色。
IsMenuEnabled 获取或设置一个值,该值指示当用户单击省略号以展开应用程序栏时用户是否看到(可选)菜单项。
IsVisible 获取或设置一个值,该值指示应用程序栏是否可见。
MenuItems 获取应用程序栏上显示的菜单项列表。
MiniSize 获取当 Mode 属性设置为 Minimized 时应用程序扩展到页面的距离。
Mode 获取或设置应用程序栏的大小。
Opacity 获取或设置应用程序栏的不透明度。

4、应用程序栏最佳做法  

   微软MSDN已经帮我们提出在设计程序的时候应当注意的几点,具体实施看项目而定

       以下是使用应用程序栏的最佳做法:

  • 使用 Windows Phone 应用程序栏,代替创建您自己的菜单系统。

  • 除非有特别的理由自定义颜色,否则对应用程序栏使用默认的系统主题颜色。对应用程序栏使用自定义颜色会影响按钮图标的显示质量、会导致菜单动画出现异常的视觉效果,甚至会影响某些显示屏类型的电量消耗。

  • 避免对菜单项使用较长的文本,因为文本会超出屏幕。建议的最大长度为 14 到 20 个字符。

  • 避免在应用程序栏上使用 5 个以上的菜单项,因为这样会强制用户进行滚动。

本笔录大部分来至于MSDN文档

Windows phone(1)-ApplicationBar(应用栏)的更多相关文章

  1. windows phone (26) ApplicationBar应用程序栏

    原文:windows phone (26) ApplicationBar应用程序栏 在应用程序中,如果需要几个按钮或者菜单来执行一些普通的命令,就应该考虑使用ApplicationBar,因为silv ...

  2. Ubuntu 14 添加Windows风格的底部任务栏

    习惯了Windows风格的底部任务栏,而Ubuntu 14是没有的,还好有人做好了一个任务栏插件,可以在线安装: 1.打开终端(Ctrl+Alt+T),然后输入下面的命令 sudo apt-get i ...

  3. C#使用Windows API 隐藏/显示 任务栏 (FindWindowEx, ShowWindow)

    原文 C#使用Windows API 隐藏/显示 任务栏 (FindWindowEx, ShowWindow) 今天,有网友询问,如何显示和隐藏任务栏? 我这里,发布一下使用Windows API 显 ...

  4. Windows 8 应用开发 - 应用栏

    原文:Windows 8 应用开发 - 应用栏      通过应用栏(AppBar)可以在需要时向用户显示各种应用命令.应用栏提供与用户当前页面或当前选定的内容相关的各种命令.默认情况下,应用栏处于隐 ...

  5. 修改 Windows 10 UWP 应用任务栏图标

    修改 Windows 10 UWP 应用任务栏图标 Windows 7 时代,修改任务栏图标很简单,右键打开属性,更改图标即可.但步入 Windows 8 之后,随着应用商店 UWP 应用的问世,可以 ...

  6. eclipse中windows下的preferences左栏没有tomcat?

    是因为缺少eclipse for tomcat 插件,到http://www.eclipsetotale.com/tomcatPlugin.html此网站下载,我的eclipse版本是4.4版本的,所 ...

  7. Windows api实现桌面任务栏隐藏\显示

    //隐藏任务栏 HWND hWnd = ::FindWindow(TEXT("Shell_traywnd"),TEXT("")); ::SetWindowPos ...

  8. Windows 7 添加快速启动栏

    1.右击任务栏空白处,选择 “工具栏” ,单击 “新建工具栏” 2.输入 以下路径: %userprofile%\AppData\Roaming\Microsoft\Internet Explorer ...

  9. windows桌面图标及任务管理栏丢失

    背景环境: 卸载某些软件,如Auto CAD 2011 之后,会出现桌面图标和任务栏丢失的现象,某些重要文件没有保存或者不能注销及重启的动作 1:按组合键Ctrl+Shift+Esc,键调出任务管理器 ...

随机推荐

  1. C#“同步调用”、“异步调用”、“异步回调”

    本文将主要通过“同步调用”.“异步调用”.“异步回调”三个示例来讲解在用委托执行同一个“加法类”的时候的的区别和利弊. 首先,通过代码定义一个委托和下面三个示例将要调用的方法: ); //模拟该方法运 ...

  2. Disable right click on the website

    Many developers/website owners like to keep their website images personal and don't want anyone to c ...

  3. LINUX ping 指定网卡

    计算机上有多块网卡(例如笔记本电脑的无线网卡和以太网卡)连接至网络,使用ping命令想指定使用哪块网卡怎么办? ping -I eth0 10.10.10.1ping -I eth1 10.10.10 ...

  4. java 数组初始化

    一维数组 1)   int[] a;   //声明,没有初始化 2)   int[] a=new int[5];   //初始化为默认值,int型为0 3)   int[] a={1,2,3,4,5} ...

  5. weak 弱引用的实现方式

    来源:冬瓜争做全栈瓜 链接:https://desgard.com/weak/ 对于 runtime 的分析还有很长的路,最近在写 block 系列的同时,也回顾一下之前疏漏的细节知识.这篇文章是关于 ...

  6. WinForm的延时加载控件概述

    这篇文章主要介绍了WinForm的延时加载控件,很实用的技巧,在C#程序设计中有着比较广泛的应用,需要的朋友可以参考下   本文主要针对WinForm的延迟加载在常用控件的实现做简单的描述.在进行C# ...

  7. 在使用ICSharpCode.SharpZipLib进行目录压缩后,再解压缩是提示这个错误Size mismatch: 4294967295;126976 70202;126976

    在压缩代码中加入entry.CompressionMethod = CompressionMethod.Stored

  8. iOS7.1 编译报错 解决方案 体会

    iOS升级到 iOS 7.1 了 ,开发人员必须与时俱进.果断下载更新了xcode5.1版本 ,试运行了一下已上线的应用,哇 报错了!好头疼 贴下报错地方: 都是关于第三方类库报的错 比如parse. ...

  9. 【Mood-4】心静是一门艺术

    到现在工作还没有着落,心里面反而比以前平静,以前也知道自己的水平 属于一瓶不满,半瓶咣当的那种情况,但是那时候的自己总是觉得自己的综合水平可能会弥补一下自己在技术上的缺失,但是,现在看来,太过于自信, ...

  10. matlab 和 origin作图去除白边,字体调节

    一 matlab作图 (1)在图形文件figure的菜单上点击file->export setup, 在size选项中,对"expand axes to fill figure&quo ...