前边介绍Push Notification时,其实已经谈到了Tile Notification。在Windows Phone 7.1中,Smart Tile得到了极大的提高。我们不但可以控制Tile的动画显示、内容和背景切换,而且还能够为同一个应用提供两个Tile,比如一个天气预报的应用程序,就可以在手机的首页上显示多个Tile,一个是北京的天气,另一个是上海的天气等。

实现Application Tile

MSDN上的文章写的又臭又长,其实挺简单的事情,弄得那么复杂。我试着改写了一下例子,加入到应用的一个Button点击事件里:

            // Application Tile is always the first Tile, even if it is not pinned to Start.ShellTile TileToFind = ShellTile.ActiveTiles.First();// Set the properties to update for the Application Tile.// Empty strings for the text values and URIs will result in the property being cleared.StandardTileData NewTileData = new StandardTileData{Title = "Title",BackgroundImage = new Uri("Background.png", UriKind.Relative),Count = 2,BackTitle = "Back Tilte",BackBackgroundImage = new Uri("Background2.png", UriKind.Relative),BackContent = "This is BackContent"};// Update the Application TileTileToFind.Update(NewTileData);

首先,我们要引用Microsoft.Phone.Shell命名空间,然后通过ShellTile.ActiveTiles.First()方法来获取应用最主要的ShellTile.每个应用至少会有一个Tile,所以不用担心该对象为空。然后我们创建一个StandardTileData对象,为其中的属性赋值。属性分为两组,每组都会有背景图片、标题和内容,显示位置如下图所示。如果设置两组Tile属性,则Tile在显示一段时间后会自动切换。最后,我们调用ShellTile对象的Update方法,将StandardTileData对象传递进去,就完成了新Tile的设置。BackgroundImage和BackBackgroundImage指定的是图片的URI,可以是本地的图片,也可以是来自网络的图片。我们使用的两个图片,都是以Content方式加入到工程中的图片。

当我们将程序部署到设备或模拟器上时,首先会在Application List里出现对应的图标。我们长按图标,会出现一个菜单,选择Pin to start,会将应用程序的图标显示到手机首页上。

运行应用程序,点击Button后,Tile会被更新成新的式样。两张背景和内容会交替显示,显示效果如下图所示:

  

实现 Secondary Tile

在完成了Application Tile的显示之后,我们接下来要实现更复杂的Secondary Tile,当然,我们可以添加多个Tile。在实现Secondary Tile时,有两个技术点需要实现,一个是Tile的添加与显示;另一个则是,程序启动时如何区分是由哪个Tile点击启动应用的。

首先,我们来看如何添加Secondary Tile的代码:

            // Look to see whether the Tile already exists and if so, don't try to create it again.ShellTile TileToFind = ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString().Contains("DefaultTitle=FromTile"));// Create the Tile if we didn't find that it already exists.if (TileToFind == null){// Create the Tile object and set some initial properties for the Tile.// The Count value of 12 shows the number 12 on the front of the Tile. Valid values are 1-99.// A Count value of 0 indicates that the Count should not be displayed.StandardTileData NewTileData = new StandardTileData{BackgroundImage = new Uri("Background.png", UriKind.Relative),Title = "Secondary Tile",Count = 12,BackTitle = "Back of Tile",BackContent = "Welcome to the back of the Tile",BackBackgroundImage = new Uri("Background2.png", UriKind.Relative)};// Create the Tile and pin it to Start. This will cause a navigation to Start and a deactivation of our application.ShellTile.Create(new Uri("/MainPage.xaml?DefaultTitle=FromTile", UriKind.Relative), NewTileData);}else{TileToFind.Delete();}

首先调用ShellTile.ActiveTiles.FirstOrDefault方法,获取在NavigationUri属性中包含“DefaultTitle=FromTile”字样的ShellTile对象,如果获取到的ShellTile对象为空,则创建Secondary Tile,否则调用ShellTile的Delete方法,删除这个Tile。

创建Secondary Tile的过程,首先创建StandardTileData对象,将显示的各个参数进行赋值,这一步与Application Tile相同;然后,调用ShellTile的Create方法,第一个参数是URI,即点击该Tile后,调用Page的命令行,可以包含参数,第二个参数是StandardTileData对象,用于指定显示式样。

需要注意的是,如果Page命令行指定不对,会引起用户点击Tile时,应用直接退出,由于无法调试,第一次接触这个问题时,会找不到具体的原因。

Secondary Tile显示效果如下:

 

接下来,我们就要处理区分不同Tile点击的事件了,需要重载MainForm的OnNavigatedTo方法:

        protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e){string value = null;if (this.NavigationContext.QueryString != null){this.NavigationContext.QueryString.TryGetValue("DefaultTitle", out value);if (value != null){textBoxTitle.Text = value;}else{textBoxTitle.Text = "FromMain";}}base.OnNavigatedTo(e);}

通过NavigationContext.QueryString的TryGetValue方法来获取DefaultTitle参数的值,如果无法获取到该值,则认为该点击来自第一个Tile,相反则来自第二个Tile。我们将参数显示在主页面的文本框里,当然,实际应用中可以有更加复杂的业务逻辑。界面显示效果如下:

到这里,我们简单介绍了如何添加Tile、修改Tile内容,除此之外,还有如何修改Tile的初始值,指定Tile更新的时间间隔等。在这里,我们就不介绍了,大家可以参考又臭又长的MSDN文档,这部分不长,我可以保证。

写在最后

好了,到这里,我们正式将Windows Phone 7.1中的Tile编程的内容介绍完了。Windows Phone采用的是HUB方式,对于功能进行分类,所以,就要求Tile具备更丰富的显示方式和展现形式。而且,多个应用可以对应于一个Tile,同样一个应用也可以对应多个Tile,这样极大提高了主页与应用之间交互的丰富程度。

当然,具体的Tile,还要在实际的开发中使用,才能真正了解其优缺点。

OpenXLive杯Windows Phone游戏开发大赛

OpenXLive杯Windows Phone游戏开发大赛,是由OpenXLive联合国内知名的开发者社区:DevDiv、智机网、WPMind、Silverlight银光中国和XNA游戏世界,一起举办的针对Windows Phone游戏开发的比赛。

本文转自马宁博客园博客,原文链接:http://www.cnblogs.com/aawolf/archive/2011/08/03/2125692.html,如需转载请自行联系原作者

马宁的Windows Phone 7.1初体验(三)——Tile相关推荐

  1. 马宁的Windows Phone 7.1初体验(二)——Push Notification

    Push Notification并不是Windows Phone 7.1的新功能,但是之前的文章里对这部分都缺少详细的分析,所以姑且就把Push Notification放到这部分里吧. 很多iOS ...

  2. 马宁的Windows Phone 7.1初体验——XNA与Silverlight集成

    关于Windows Phone Mango真真假假的图片.视频已经在网上流传很久了,微软发布的Windows Phone 7.1 SDK可以让我们看到一部分Mango支持的功能. 普通用户对Mango ...

  3. w ndows7中桌面图标,七仔教你学习Windows 7:桌面初体验

    [IT168 软件技巧]朋友,你还在坚守"XP"吗?你还在忍受"Vista"吗?为什么不试试Windows 7?只要你曾领略她卓越的性能.华丽的外表,就一定会为 ...

  4. Windows XP SP2之初体验

    Windows XP SP2之初体验 前奏 下载了273MB的Windows XP SP2 ,然后安装,不知道安装多久,因为中途居然睡着了:-p,半夜醒来一看,已经可以重新启动了. 重新启动后,配置了 ...

  5. Windows Embedded Standard开发初体验(二)

    支持Silverlight的Windows Embedded Standard 好了,完成安装之后,我们就可以来做Windows Embedded Standard的第一个操作系统镜像了.在开始菜单中 ...

  6. Windows Embedded Standard开发初体验(四)

    添加文件.依赖组件.注册表 接下来我们就要进入创建组件最重要的一环了,添加文件.为什么说重要,因为这里有一个大坑,我在Windows Embedded Standard产品组施卫娟老师的指导下,花了两 ...

  7. 双重惊喜——Windows Phone Developer Tools初体验

    作者:马宁 俗话说,物极必反,Windows Phone就像中国足球队一样,在所有人对他失去信心的时候,突然灵魂附体.RP爆发,干掉了韩国队.当然,就像东亚四强赛说明不了问题一样,MIX 2010上炫 ...

  8. Windows Server 8 Beta 初体验之三 Active Directory

    Windows Server系统,随着版本的升级,很多功能越来越依赖于Active Directory,越来越离不开Active Directory,所以在体验Windows Server 8 Bet ...

  9. Windows Phone 7之初体验(四.平台架构简介)

    一.应用程序平台架构 分为两大部分: 1. Screen 在本地部分又分为两块: a)       Tool and Support:这里主要包括开发应用所需的工具和支持. b)      Runti ...

最新文章

  1. 待解决的问题--用DOS命令删除远程主机系统文件的方法
  2. React (native) 相关知识
  3. linux snmp进程,linux snmpwalk命令详解
  4. Ubuntu 16.04 安装wine
  5. python生成器和迭代器区别_生成器、迭代器的区别?
  6. c++用牛顿法开多次根_望远镜的历史之三:大神出世,改变望远镜历史的竟然是牛顿...
  7. 【Android开发】之Fragment与Acitvity通信
  8. 电脑开机时光驱咔咔响_电脑机箱噪音大?看懂这篇内容,让你四步就能解决问题...
  9. vue入门--简单嵌套路由的一个路径小问题
  10. 谷歌浏览器为什么不能自定义安装路径?
  11. 软件工程期末笔记整理
  12. 阿里、腾讯、知乎裁员 那些被裁的程序员怎么办?
  13. java短学期教师总结_短学期心得体会(共10篇).docx
  14. 随机向量函数链神经网络(RVFLNN)简介——附测试代码
  15. 次模优化·第〇集:简介
  16. 【JS】导出合并表格
  17. 关于不锈钢管TIG+MAG
  18. 软件项目管理案例教程-韩万江-期末复习
  19. html钢琴块游戏源码,好玩的钢琴块游戏
  20. 955不加班的公司名单:955.WLB

热门文章

  1. 笔记本拆c面_笔记本拆机清灰 篇三:SONY 索尼 FE35C 拆机清灰
  2. HttpClient简单使用
  3. Protoshares 和 Angelshares介绍
  4. java输入流从指定字节读取,JAVA输入输出流-字节流篇
  5. java hook全局钩子_钩子(hook)
  6. linux expect循环用法,Linux expect用法介绍
  7. 角色转变:新手项目管理的三大误区
  8. linux光盘镜像文件
  9. 阿里巴巴2018校园招聘运筹优化算法工程师编程题
  10. 造梦者,考研人,都会好的!【励志】