Windows phone(1)-ApplicationBar(应用栏)
在手机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(应用栏)的更多相关文章
- windows phone (26) ApplicationBar应用程序栏
原文:windows phone (26) ApplicationBar应用程序栏 在应用程序中,如果需要几个按钮或者菜单来执行一些普通的命令,就应该考虑使用ApplicationBar,因为silv ...
- Ubuntu 14 添加Windows风格的底部任务栏
习惯了Windows风格的底部任务栏,而Ubuntu 14是没有的,还好有人做好了一个任务栏插件,可以在线安装: 1.打开终端(Ctrl+Alt+T),然后输入下面的命令 sudo apt-get i ...
- C#使用Windows API 隐藏/显示 任务栏 (FindWindowEx, ShowWindow)
原文 C#使用Windows API 隐藏/显示 任务栏 (FindWindowEx, ShowWindow) 今天,有网友询问,如何显示和隐藏任务栏? 我这里,发布一下使用Windows API 显 ...
- Windows 8 应用开发 - 应用栏
原文:Windows 8 应用开发 - 应用栏 通过应用栏(AppBar)可以在需要时向用户显示各种应用命令.应用栏提供与用户当前页面或当前选定的内容相关的各种命令.默认情况下,应用栏处于隐 ...
- 修改 Windows 10 UWP 应用任务栏图标
修改 Windows 10 UWP 应用任务栏图标 Windows 7 时代,修改任务栏图标很简单,右键打开属性,更改图标即可.但步入 Windows 8 之后,随着应用商店 UWP 应用的问世,可以 ...
- eclipse中windows下的preferences左栏没有tomcat?
是因为缺少eclipse for tomcat 插件,到http://www.eclipsetotale.com/tomcatPlugin.html此网站下载,我的eclipse版本是4.4版本的,所 ...
- Windows api实现桌面任务栏隐藏\显示
//隐藏任务栏 HWND hWnd = ::FindWindow(TEXT("Shell_traywnd"),TEXT("")); ::SetWindowPos ...
- Windows 7 添加快速启动栏
1.右击任务栏空白处,选择 “工具栏” ,单击 “新建工具栏” 2.输入 以下路径: %userprofile%\AppData\Roaming\Microsoft\Internet Explorer ...
- windows桌面图标及任务管理栏丢失
背景环境: 卸载某些软件,如Auto CAD 2011 之后,会出现桌面图标和任务栏丢失的现象,某些重要文件没有保存或者不能注销及重启的动作 1:按组合键Ctrl+Shift+Esc,键调出任务管理器 ...
随机推荐
- 创建ORACLE JOB
oracle job简介 主要的使用情景 定时在后台执行相关操作:如每天晚上0点将一张表的数据保存到另一张表中,2:定时备份数据库等 熟化说万事开头难,这里我只简单记述一个创建一个简单的job 步骤如 ...
- ZOJ 2588 Burning Bridges(求含重边的无向连通图的割边) - from lanshui_Yang
Burning Bridges Time Limit: 5 Seconds Memory Limit: 32768 KB Ferry Kingdom is a nice little country ...
- 在window平台搭建Qt开发环境(使用VS2008 IDE)
一直用QT Creator(mingw)开发Qt应用程序,每次如果需要修改编译链接参数选项时,都要修改pro文件,而这个文件是基于文本的,每次都要记住这些选项参数名,如果在知道原理的情况下还记住这些字 ...
- 给学习IT、编程者的看
Preface: 我始终认为,对一个初学者来说,IT界的技术风潮...... Content: 我始终认为,对一个初学者来说,IT界的技术风潮是不可以追赶的,而且也没有能力去追赶.我时常看见自己的DD ...
- [golang学习] goroutine调度
这两天有些闲功夫, 学习下golang, 确实非常简洁. 不过有些缺憾. 在我的测试中. golang的调度(goroutine)似乎不是非常好. func say(k int) { fmt.Prin ...
- C# 之 FileSystemWatcher事件多次触发的解决方法
1.问题描述 程序里需要监视某个目录下的文件变化情况: 一旦目录中出现新文件或者旧的文件被覆盖,程序需要读取文件内容并进行处理.于是使用了下面的代码: public void Initial() { ...
- 关于js-binding中Layer触摸事件的优化
关于js-binding中Layer触摸事件的优化 cocos2d-x 3.7 1. 目前js中监听触摸事件带来的不便(特别是cocosbuilder) 在目前的js-binding中,如果要监听la ...
- Uva 10129 - Play on Words 单词接龙 欧拉道路应用
跟Uva 10054很像,不过这题的单词是不能反向的,所以是有向图,判断欧拉道路. 关于欧拉道路(from Titanium大神): 判断有向图是否有欧拉路 1.判断有向图的基图(即有向图转化为无向图 ...
- mac下修改mysql登录密码
mysql版本5.7.9 在mac终端下修改mysql用户登录密码 终端命令如下: update mysql.user set authentication_string=PASSWORD(" ...
- Maven错误Failed to read artifact descriptor for xxx:jar 和 missing artifact maven dependency
可参考:http://stackoverflow.com/questions/6111408/maven2-missing-artifact-but-jars-are-in-place http:// ...
