windowsphone开发系统托盘和应用栏.docx
- 文档编号:11241439
- 上传时间:2023-02-26
- 格式:DOCX
- 页数:15
- 大小:180.67KB
windowsphone开发系统托盘和应用栏.docx
《windowsphone开发系统托盘和应用栏.docx》由会员分享,可在线阅读,更多相关《windowsphone开发系统托盘和应用栏.docx(15页珍藏版)》请在冰豆网上搜索。
windowsphone开发系统托盘和应用栏
系统托盘
系统托盘仅仅显示一些系统的状态,有时候我们要隐藏它,用下面的代码:
1
this.SetValue(SystemTray.IsVisibleProperty,!
(bool)this.GetValue(SystemTray.IsVisibleProperty));
注意不要忘了引入Microsoft.Phone.Shell这一命名空间。
应用程序栏
1、使用XAML生成应用程序栏
Windows Phone SDK附带的页面模板包含被注释掉的示例应用程序栏的XAML。
取消XAML的注释以创建应用程序栏。
如:
01
PhoneApplicationPage.ApplicationBar> 02 ApplicationBar IsVisible="True" IsMenuEnabled="True"> 03 ApplicationBarIconButton IconUri="/Images/appbar_button1.png"Text="Button1"/> 04 ApplicationBarIconButton IconUri="/Images/appbar_button2.png"Text="Button2"/> 05 ApplicationBar.MenuItems> 06 ApplicationBarMenuItem Text="MenuItem1"/> 07 ApplicationBarMenuItem Text="MenuItem2"/> 08 ApplicationBar.MenuItems> 09 ApplicationBar> 10
PhoneApplicationPage.ApplicationBar>
增删改点内容就可以用了,要注意引用的图片需要把属性修改为content。
2、使用C#生成应用程序栏
有时应用程序栏需要根据用户的操作来改变应用程序栏的一些设置,这样通过XAML生成应用程序栏就行不通了,所以需要通过C#来生成应用程序栏。
(1)在代码的顶部,添加Microsoft.Phone.Shell这一命名空间。
1
using Microsoft.Phone.Shell;
(2)在页面的构造函数中,在对InitializeComponent的调用之后,添加以下代码。
该代码初始化新的 ApplicationBar 对象并将该对象分配给页面的 ApplicationBar 属性。
1
ApplicationBar= new ApplicationBar();
(3)设置所需的应用程序栏属性。
1
ApplicationBar.Mode=ApplicationBarMode.Default;
2
ApplicationBar.Opacity=1.0;
3
ApplicationBar.IsVisible= true;
4
ApplicationBar.IsMenuEnabled= true;
(4)根据需要创建一个或多个 ApplicationBarIconButton 对象。
设置图标图像和按钮文本,然后将它们添加到应用程序栏。
如果您未设置按钮文本,则会发生运行时异常。
1
ApplicationBarIconButtonbutton1= new ApplicationBarIconButton();
2
button1.IconUri= new Uri("/Images/YourImage.png",UriKind.Relative);
3
button1.Text= "button1";
4
ApplicationBar.Buttons.Add(button1);
(5)菜单项是可选的。
根据需要创建一个或多个 ApplicationBarMenuItem 对象。
设置文本,然后将它们添加到应用程序栏。
1
ApplicationBarMenuItemmenuItem1= new ApplicationBarMenuItem();
2
menuItem1.Text= "menuitem1";
3
ApplicationBar.MenuItems.Add(menuItem1);
(6)下面是一个已完成的应用程序栏示例。
01
public MainPage()
02
{
03
InitializeComponent();
04
05
ApplicationBar= new ApplicationBar();
06
07
ApplicationBar.Mode=ApplicationBarMode.Default;
08
ApplicationBar.Opacity=1.0;
09
ApplicationBar.IsVisible= true;
10
ApplicationBar.IsMenuEnabled= true;
11
12
ApplicationBarIconButtonbutton1= new ApplicationBarIconButton();
13
button1.IconUri= new Uri("/Images/YourImage.png",UriKind.Relative);
14
button1.Text= "button1";
15
ApplicationBar.Buttons.Add(button1);
16
17
ApplicationBarMenuItemmenuItem1= new ApplicationBarMenuItem();
18
menuItem1.Text= "menuitem1";
19
ApplicationBar.MenuItems.Add(menuItem1);
20
}
(7)对于每个图标按钮和菜单项,确定用户单击时要调用的事件。
下面是来自上一过程的、确定了单击事件的应用程序栏的示例。
01
ApplicationBarIconButtonbutton1= new ApplicationBarIconButton();
02
button1.IconUri= new Uri("/Images/YourImage.png",UriKind.Relative);
03
button1.Text= "button1";
04
ApplicationBar.Buttons.Add(button1);
05
button1.Click+= new EventHandler(button1_Click);
06
07
ApplicationBarMenuItemmenuItem1= new ApplicationBarMenuItem();
08
menuItem1.Text= "menuitem1";
09
ApplicationBar.MenuItems.Add(menuItem1);
10
menuItem1.Click+= new EventHandler(menuItem1_Click);
(8)对于每个图标按钮和菜单项,添加用户单击时要调用的事件。
在页面类中添加代码。
下面是来自上一过程的应用程序栏的单击事件示例。
01
private void button1_Click(object sender,EventArgse)
02
{
03
MessageBox.Show("Button1works!
");
04
//Doworkforyourapplicationhere.
05
}
06
07
private void menuItem1_Click(object sender,EventArgse)
08
{
09
MessageBox.Show("Menuitem1works!
");
10
//Doworkforyourapplicationhere.
11
}
3、透明度
透明度可以设置为0到1的数值,但是推荐使用0,0.5或者是1。
如:
1
shell:
ApplicationBarIsVisible=“True”IsMenuEnabled=“True”Opacity=“0.5”
4、使用ExpressionBlend创建应用程序栏
(1)先解开注释掉的ApplicationBar;
(2)右键该页面使用ExpressionBlend打开;
(3)打开此页面后,看到ExpressionBlend左边的面板上ObjectsandTimeline面板;
(4)如上面板的内容,微软为我们默认添加了两个ApplicationBarIconButton(最多四个)和两个ApplicationBarMenuItem,下面编辑这四个节点的内容,并为其添加点击事件和图片内容。
点击第一个ApplicationBarMenuItem,中间的显示图效果自动定位并显示,如下图:
(5)视角右移到右上角,并选中第一个选项卡:
元素属性,面板的最右边有两个选择图标。
如下图所示,蓝色箭头代码元素的基本属性(包括Name和Text,其他UI有更多属性这里不详细介绍),红色箭头代表该元素的事件;
(6)好了,认识了一些基本的原理,下面来改改吧,将Name改为“AboutApplicationBar”。
然后,将对应的Text改为“关于”。
转到事件面板,双击它,它会自动帮我们在CS代码里面生成一个事件句柄,像这样:
(7)根据上面的操作,将下面的ApplicationBarMenuItem改为“查看图片”的菜单。
下面来做ApplicationBarIconButton,具体操作跟上面是一致的,唯一区别的是ApplicationBarIconButton需要一个图片资源,利用ExpresssionBlend可以很方便的为其添加图片资源,并且这些图片资源都是微软建议使用的图片,选中ApplicationBarIconButton会看到面板属性比上面的MenuItem多了一个属性,如下图这个属性是一个图片的地址,并且它是一个下拉框允许我们选择,看看图吧:
ps:
这些图片位于C:
\ProgramFiles\MicrosoftSDKs\WindowsPhone\v7.0\Icons目录。
补充:
(1)由于应用程序栏不是Silverlight控件,并不继承自FrameworkElement,因此应用程序栏不支持某些常见的控件功能,如数据绑定。
这意味着不能通过使用XAML格式的名称属性来更改图标按钮和菜单项。
如果您希望在运行时动态修改文本或图标,则应该使用C#或VisualBasic创建应用程序栏,详见上面的通过C#生成应用程序栏。
(2)在有些情况下我们会需要提供横跨整个应用程序的通用功能,这样,如果一个一个页面的显示ApplicationBar,这样效率很低,所以可以写一个通用的ApplicationBar,提供给整个应用程序使用。
由于是提供给整个应用程序使用,所以需要在App.xaml注册,如:
01
--注册应用程序栏-->
02
ApplicationBar x: Key="MainAppBar" IsVisible="True"> 03 --菜单项Abou--> 04 ApplicationBar.MenuItems> 05 ApplicationBarMenuItem Text="About"Click="ApplicationBarMenuItem_Click"/> 06 ApplicationBar.MenuItems> 07 08 --应用程序条按钮--> 09 ApplicationBar.Buttons> 10 ApplicationBarIconButton Text="Web" IconUri="ie_icon.png"Click="ApplicationBarIconButton_Click"/> 11 ApplicationBarIconButton Text="Images"IconUri="pictures_Icon.png" Click="ImageEvent_Click"/> 12 ApplicationBar.Buttons> 13 ApplicationBar> 进入APP.xaml.cs在自动生成的事件中,键入代码: 01 private void ApplicationBarMenuItem_Click(object sender,EventArgse) 02 { 03 PhoneApplicationFrameroot=Application.Current.RootVisual asPhoneApplicationFrame; 04 root.Navigate(new Uri("/About",UriKind.Relative)); 05 } 06 07 private void ApplicationBarIconButton_Click(object sender,EventArgse) 08 { 09 10 } 11 12 private void ImageEvent_Click(object sender,EventArgse) 13 { 14 PhoneApplicationFrameroot=Application.Current.RootVisual asPhoneApplicationFrame; 15 root.Navigate(new Uri("/Pictures",UriKind.Relative)); 16 } 这样ApplicationBar就已经注册好了,在需要显示应用程序栏的页面的phone: PhoneApplicationPage节点指定ApplicationBar来源,比如本文的指定方式: 01 PhoneApplicationPage 02 x: Class="DataBind.MainPage" 03 xmlns=" 04 xmlns: x=" 05 xmlns: phone="clr-namespace: Microsoft.Phone.Controls;assembly=Microsoft.Phone" 06 xmlns: shell="clr-namespace: Microsoft.Phone.Shell;assembly=Microsoft.Phone" 07 xmlns: d=" 08 xmlns: mc="http: //schemas.openxmlformats.org/markup-compatibility/2006" 09 mc: Ignorable="d" d: DesignWidth="480" d: DesignHeight="768" 10 FontFamily="{StaticResourcePhoneFontFamilyNormal}" 11 FontSize="{StaticResourcePhoneFontSizeNormal}" 12 Foreground="{StaticResourcePhoneForegroundBrush}" 13 SupportedOrientations="Portrait" Orientation="Portrait" 14 shell: SystemTray.IsVisible="True" 15 ApplicationBar="{StaticResourceMainAppBar}" 16 > 原文链接:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- windowsphone 开发 系统托盘 应用