原文:与众不同 windows phone (3) - Application Bar(应用程序栏)

[索引页]
[源码下载]

与众不同 windows phone (3) - Application Bar(应用程序栏)

作者:webabcd

介绍
与众不同 windows phone 7.5 (sdk 7.1) 之应用程序栏

  • 概述
  • XAML 方式生成 AppBar
  • Code 方式生成并更新 AppBar
  • Resource 方式加载 AppBar

示例
1、AppBar 的 概述
Summary.xaml

<phone:PhoneApplicationPage
x:Class="Demo.ApplicationBarDemo.Summary"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="480"
shell:SystemTray.IsVisible="True"> <Grid x:Name="LayoutRoot" Background="Transparent"> <TextBlock TextWrapping="Wrap">
<Run>AplicationBar 概述</Run>
<LineBreak />
<LineBreak />
<Run>1、自带图标地址在类似如下的地址:C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v7.1\Icons\</Run>
<LineBreak />
<Run>2、ApBar 图标大小 48*48,核心图像 26*26 以便不与圆圈重叠(圆圈由系统自动绘制)</Run>
<LineBreak />
<Run>3、设计图标时注意:以白色为透明背景色,这样系统会对不同主题背景(现在有两种,深和浅)自动适应</Run>
<LineBreak />
<Run>4、DefaultSize 的 ApBar 高度为 72 像素;Minimized 的 ApBAr 高度为 30 像素</Run>
<LineBreak />
<Run>5、DefaultSize 的 ApBar 默认不会显示按钮的提示文本,需要单击右侧三个圆点后才会显示</Run>
</TextBlock> </Grid> </phone:PhoneApplicationPage>

2、演示 XAML 方式生成 AppBar
XAMLDemo.xaml

<phone:PhoneApplicationPage
x:Class="Demo.ApplicationBarDemo.XAMLDemo"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
mc:Ignorable="d" d:DesignHeight="696" d:DesignWidth="480"
shell:SystemTray.IsVisible="True"> <phone:PhoneApplicationPage.ApplicationBar> <!--
ApplicationBar - 应用程序栏
Mode - 应用程序栏的样式。ApplicationBarMode.Default:默认(显示图标);ApplicationBarMode.Minimized:最小化(右侧有3个圆点,用于提示单击可弹出 ApBar)
IsVisible - 是否显示 ApBar
IsMenuEnabled - 是否显示 ApBar 的 MenuItem
BackgroundColor - AppBar 的背景色
ForegroundColor - AppBar 的前景色 ApplicationBarIconButton - ApBar 的 IconButon
IconUri - 按钮图标的地址
Text - 用于描述按钮功能的文本
Click - 单击按钮后所触发的事件 ApplicationBarMenuItem - ApBar 的 MenuItem
Text - 菜单项的文本
Click - 单击菜单项后所触发的事件
--> <shell:ApplicationBar Mode="Default" Opacity="1.0" IsMenuEnabled="False" IsVisible="True" BackgroundColor="Blue" ForegroundColor="AntiqueWhite"> <shell:ApplicationBarIconButton IconUri="/ApplicationBarDemo/Assets/appbar.add.rest.png" Text="添加" Click="ApplicationBarIconButton_Click" />
<shell:ApplicationBarIconButton IconUri="/ApplicationBarDemo/Assets/appbar.delete.rest.png" Text="删除" Click="ApplicationBarIconButton_Click" />
<shell:ApplicationBarIconButton IconUri="/ApplicationBarDemo/Assets/appbar.save.rest.png" Text="保存" Click="ApplicationBarIconButton_Click" />
<shell:ApplicationBarIconButton IconUri="/ApplicationBarDemo/Assets/appbar.download.rest.png" Text="下载" Click="ApplicationBarIconButton_Click" /> <shell:ApplicationBar.MenuItems>
<shell:ApplicationBarMenuItem Text="menu item 1" Click="ApplicationBarMenuItem_Click" />
<shell:ApplicationBarMenuItem Text="menu item 2" Click="ApplicationBarMenuItem_Click" />
<shell:ApplicationBarMenuItem Text="menu item 3" Click="ApplicationBarMenuItem_Click" />
<shell:ApplicationBarMenuItem Text="menu item 4" Click="ApplicationBarMenuItem_Click" />
<shell:ApplicationBarMenuItem Text="menu item 5" Click="ApplicationBarMenuItem_Click" />
<shell:ApplicationBarMenuItem Text="menu item 6" Click="ApplicationBarMenuItem_Click" />
<shell:ApplicationBarMenuItem Text="menu item 7" Click="ApplicationBarMenuItem_Click" />
</shell:ApplicationBar.MenuItems> </shell:ApplicationBar>
</phone:PhoneApplicationPage.ApplicationBar> </phone:PhoneApplicationPage>

XAMLDemo.xaml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls; using Microsoft.Phone.Shell; namespace Demo.ApplicationBarDemo
{
public partial class XAMLDemo : PhoneApplicationPage
{
public XAMLDemo()
{
InitializeComponent();
} private void ApplicationBarIconButton_Click(object sender, EventArgs e)
{
MessageBox.Show("选择的 IconButton 是:" + ((ApplicationBarIconButton)sender).Text);
} private void ApplicationBarMenuItem_Click(object sender, EventArgs e)
{
MessageBox.Show("选择的 MenuItem 是:" + ((ApplicationBarMenuItem)sender).Text);
}
}
}

3、演示 Code 方式生成并更新 AppBar
CodeDemo.xaml

<phone:PhoneApplicationPage
x:Class="Demo.ApplicationBarDemo.CodeDemo"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="480"
shell:SystemTray.IsVisible="True"> <StackPanel Orientation="Vertical"> <!--用于演示动态改变 ApBar 的 Mode-->
<TextBlock Text="设置 ApplicationBarMode" Foreground="{StaticResource PhoneAccentBrush}" />
<StackPanel Orientation="Horizontal">
<RadioButton Checked="ModeChanged" Name="btnDefaultSize" Content="DefaultSize 模式" />
<RadioButton Checked="ModeChanged" Name="btnMinimized" Content="Minimized 模式" />
</StackPanel> <!--用于演示动态改变 ApBar 的 IsVisible-->
<TextBlock Text="是否显示" Foreground="{StaticResource PhoneAccentBrush}" />
<StackPanel Orientation="Horizontal">
<RadioButton Checked="VisibilityChanged" Name="btnVisible" Content="显示" />
<RadioButton Checked="VisibilityChanged" Name="btnHidden" Content="隐藏" />
</StackPanel> </StackPanel> </phone:PhoneApplicationPage>

CodeDemo.xaml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls; using Microsoft.Phone.Shell; namespace Demo.ApplicationBarDemo
{
public partial class CodeDemo : PhoneApplicationPage
{
public CodeDemo()
{
InitializeComponent(); this.Loaded += new RoutedEventHandler(CodeDemo_Loaded);
} void CodeDemo_Loaded(object sender, RoutedEventArgs e)
{
/*
* ApplicationBar - 应用程序栏
* Mode - 应用程序栏的样式。ApplicationBarMode.Default:默认(显示图标);ApplicationBarMode.Minimized:最小化(右侧有3个圆点,用于提示单击可弹出 ApBar)
* IsVisible - 是否显示 ApBar
* IsMenuEnabled - 是否显示 ApBar 的 MenuItem
* BackgroundColor - AppBar 的背景色
* ForegroundColor - AppBar 的前景色
*
* ApplicationBarIconButton - ApBar 的 IconButon
* Buttons - IconButon 的集合
* IconUri - 按钮图标的地址
* Text - 用于描述按钮功能的文本
* Click - 单击按钮后所触发的事件
*
* ApplicationBarMenuItem - ApBar 的 MenuItem
* MenuItems - MenuItem 的集合
* Text - 菜单项的文本
* Click - 单击菜单项后所触发的事件
*/ ApplicationBar = new ApplicationBar(); ApplicationBar.Mode = ApplicationBarMode.Default;
ApplicationBar.Opacity = 1.0;
ApplicationBar.IsVisible = true;
ApplicationBar.IsMenuEnabled = true; ApplicationBarIconButton btnAdd = new ApplicationBarIconButton();
btnAdd.IconUri = new Uri("/ApplicationBarDemo/Assets/appbar.add.rest.png", UriKind.Relative);
btnAdd.Text = "添加";
btnAdd.Click += delegate { MessageBox.Show("选择了 添加 按钮"); };
ApplicationBar.Buttons.Add(btnAdd); ApplicationBarMenuItem item1 = new ApplicationBarMenuItem();
item1.Text = "menu item 1";
item1.Click += delegate { MessageBox.Show("选择了 menu item 1 菜单"); };
ApplicationBar.MenuItems.Add(item1); btnDefaultSize.IsChecked = true;
btnVisible.IsChecked = true;
} // 动态修改该 AppBar 的 Mode
private void ModeChanged(object sender, RoutedEventArgs e)
{
string option = ((RadioButton)sender).Name;
switch (option)
{
case "btnDefaultSize":
ApplicationBar.Mode = ApplicationBarMode.Default;
break;
case "btnMinimized":
ApplicationBar.Mode = ApplicationBarMode.Minimized;
break;
}
} // 动态修改该 AppBar 的 IsVisible
private void VisibilityChanged(object sender, RoutedEventArgs e)
{
string option = ((RadioButton)sender).Name;
switch (option)
{
case "btnVisible":
ApplicationBar.IsVisible = true;
break;
case "btnHidden":
ApplicationBar.IsVisible = false;
break;
}
}
}
}

4、演示 Resource 方式加载 AppBar
App.xaml

    <Application.Resources>

        <shell:ApplicationBar x:Key="AppBar1" IsVisible="True" IsMenuEnabled="True">
<shell:ApplicationBarIconButton IconUri="/ApplicationBarDemo/Assets/appbar.add.rest.png" Text="添加" />
<shell:ApplicationBarIconButton IconUri="/ApplicationBarDemo/Assets/appbar.delete.rest.png" Text="删除" />
<shell:ApplicationBar.MenuItems>
<shell:ApplicationBarMenuItem Text="MenuItem 1" />
<shell:ApplicationBarMenuItem Text="MenuItem 2" />
</shell:ApplicationBar.MenuItems>
</shell:ApplicationBar> <shell:ApplicationBar x:Key="AppBar2" IsVisible="True" IsMenuEnabled="True">
<shell:ApplicationBarIconButton IconUri="/ApplicationBarDemo/Assets/appbar.save.rest.png" Text="保存" />
<shell:ApplicationBarIconButton IconUri="/ApplicationBarDemo/Assets/appbar.download.rest.png" Text="下载" />
<shell:ApplicationBar.MenuItems>
<shell:ApplicationBarMenuItem Text="MenuItem 3" />
<shell:ApplicationBarMenuItem Text="MenuItem 4" />
</shell:ApplicationBar.MenuItems>
</shell:ApplicationBar> </Application.Resources>

ResourceDemo.xaml

<phone:PhoneApplicationPage
x:Class="Demo.ApplicationBarDemo.ResourceDemo"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="480"
shell:SystemTray.IsVisible="True" ApplicationBar = "{StaticResource AppBar1}">
<!--以资源集合中的名为 AppBar1 的资源来配置此页的 AplicationBar(XAML 方式)--> <StackPanel Orientation="Vertical">
<!--用资源集合中的资源来配置此页的 AplicationBar(Code 方式)-->
<Button Name="btnAppBar1" Content="AppBar1" Click="btnAppBar1_Click" />
<Button Name="btnAppBar2" Content="AppBar2" Click="btnAppBar2_Click" />
</StackPanel> </phone:PhoneApplicationPage>

ResourceDemo.xaml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls; using Microsoft.Phone.Shell; namespace Demo.ApplicationBarDemo
{
public partial class ResourceDemo : PhoneApplicationPage
{
public ResourceDemo()
{
InitializeComponent();
} private void btnAppBar1_Click(object sender, RoutedEventArgs e)
{
// 以资源集合中的名为 AppBar1 的资源来配置此页的 AplicationBar(Code 方式)
ApplicationBar = ((ApplicationBar)Application.Current.Resources["AppBar1"]);
} private void btnAppBar2_Click(object sender, RoutedEventArgs e)
{
// 以资源集合中的名为 AppBar2 的资源来配置此页的 AplicationBar(Code 方式)
ApplicationBar = ((ApplicationBar)Application.Current.Resources["AppBar2"]);
}
}
}

OK
[源码下载]

与众不同 windows phone (3) - Application Bar(应用程序栏)的更多相关文章

  1. Windows Phone 8.1 新特性 - 控件之应用程序栏

    2014年4月3日的微软Build 2014 大会上,Windows Phone 8.1 正式发布.相较于Windows Phone 8,不论从用户还是开发者的角度,都产生了很大的变化.接下来我们会用 ...

  2. Windows Phone 8.1 新功能 - 应用栏控件

    2014年4月3日的微软Build 2014 大会上.Windows Phone 8.1 正式公布. 相较于Windows Phone 8.不论从用户还是开发人员的角度,都产生了非常大的变化. 接下来 ...

  3. 与众不同 windows phone (16) - Media(媒体)之编辑图片, 保存图片到相册, 与图片的上下文菜单“应用程序...”和“共享...”关联, 与 Windows Phone 的图片中心集成

    原文:与众不同 windows phone (16) - Media(媒体)之编辑图片, 保存图片到相册, 与图片的上下文菜单"应用程序..."和"共享..." ...

  4. 与众不同 windows phone (27) - Feature(特性)之搜索的可扩展性, 程序的生命周期和页面的生命周期, 页面导航, 系统状态栏

    原文:与众不同 windows phone (27) - Feature(特性)之搜索的可扩展性, 程序的生命周期和页面的生命周期, 页面导航, 系统状态栏 [索引页][源码下载] 与众不同 wind ...

  5. 与众不同 windows phone (28) - Feature(特性)之手机方向, 本地化, 应用程序的试用体验, 系统主题资源, 本地数据的加密解密

    原文:与众不同 windows phone (28) - Feature(特性)之手机方向, 本地化, 应用程序的试用体验, 系统主题资源, 本地数据的加密解密 [索引页][源码下载] 与众不同 wi ...

  6. 与众不同 windows phone (37) - 8.0 文件系统: StorageFolder, StorageFile, 通过 Uri 引用文件, 获取 SD 卡中的文件

    [源码下载] 与众不同 windows phone (37) - 8.0 文件系统: StorageFolder, StorageFile, 通过 Uri 引用文件, 获取 SD 卡中的文件 作者:w ...

  7. 与众不同 windows phone (38) - 8.0 关联启动: 使用外部程序打开一个文件或URI, 关联指定的文件类型或协议

    [源码下载] 与众不同 windows phone (38) - 8.0 关联启动: 使用外部程序打开一个文件或URI, 关联指定的文件类型或协议 作者:webabcd 介绍与众不同 windows ...

  8. 与众不同 windows phone (15) - Media(媒体)之后台播放音频

    原文:与众不同 windows phone (15) - Media(媒体)之后台播放音频 [索引页][源码下载] 与众不同 windows phone (15) - Media(媒体)之后台播放音频 ...

  9. 与众不同 windows phone (14) - Media(媒体)之音频播放器, 视频播放器, 与 Windows Phone 的音乐和视频中心集成

    原文:与众不同 windows phone (14) - Media(媒体)之音频播放器, 视频播放器, 与 Windows Phone 的音乐和视频中心集成 [索引页][源码下载] 与众不同 win ...

随机推荐

  1. java邮件小实例

    新建一个包,名为mail 第一个类:MailSenderInfo.java  ########################################### package com.util. ...

  2. HDU 2040:亲和数

    亲和数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submis ...

  3. JVM-如何判断一段数据是真正的数据,还是对象的引用

    JVM 判断一段数据到底是数据还是引用类型,首先要看JVM选择用什么方式.通常这个选择会影响到GC的实现. 一.保守式 如果JVM选择不记录任何这种类型的数据,那么它就无法区分内存里某个位置上的数据到 ...

  4. 当JAVA集合移除自身集合元素时发生的诸多问题

    一段代码目的是想删除集合中包括"a"字符串的集合项: public class TestForeach { public static void main(String[] arg ...

  5. 高仿114la网址导航源码完整最新版

    给大家本人我精心模仿的高仿114la网址导航源码,我们都知道114la网址导航的影响力,喜欢的朋友可以下载学习一下.  由于文件较大,没有上传了,下载地址在下面有的. 附源码下载: 114la网站导航 ...

  6. excel通过转成xml格式模板,下载成excel文件

    源代码: report ztest_down_excel. data: begin of i_file occurs , val() type c, end of i_file. data begin ...

  7. Ubuntu 安装Matlab2010a

    1.挂载ISO 2.到/media/iso内,在终端执行./install 3.可视化安装 4.问题 1)/usr/local/MATLAB/R2010a/bin/util/oscheck.sh:/l ...

  8. hdu - 3572 - Task

    题意:有N个作业,M台机器,每个作业1天只能同1台机器运行,每台机器1天只能运行1个作业,第i个作业需要pi天完成,且只能从Si到Ei中选Pi天,问能否完成所有作业(T <= 20, N< ...

  9. 基于visual Studio2013解决面试题之0901奇偶站队

     题目

  10. RHEL Server 6.3下MySQL5.5.25a源码安装

    OS:RHEL Server 6.3 MySQL:mysql-5.5.25a.tar.gz 相关依赖包: ncurses-5.9.tar.gz bison-2.5.tar.gz 安装MySQL 一.安 ...