285572001 发表于 2015-5-9 11:18:57

《Windows Phone 7开发笔记》------Live Tile的实现

  在Windows Phone SDK 7.0中每一个Application只能对应一个Tile,也就是不管你如何推送或者更新都只能有一个Tile。在SDK 7.1之后就出现了多Tile,开发者可以自己定制Tile,我们将其称为Secondary Tile。
  下面我们来看一下如何新建一个Secondary Tile。创建Secondary Tile需要涉及到两个重要的类:
  
  >> ShellTile类
  该类主要负责管理多个Secondary Tile,ActiveTiles是所拥有的Tile的集合,第一个Tile就是App本身自带的Tile。
  如下是ShellTile的重要属性:





NameDescription


ActiveTiles
包含了所有已经Pin到桌面上Tile的集合。



NavigationUri
表示所创建的Secondary Tile在点击时所要跳转到的页面所对应的Uri。


  
  >> StandardTileData类
  该类用于创建一个Tile,在创建、更新或删除Secondary Tile时均要通过它来进行操作。
  如下是StandardTileData的重要属性:



NameDescription


BackBackgroundImage
设置背面Tile的背景图片。



BackContent
设置背面Tile上的文字信息。



BackgroundImage
设置主页面Tile上的背景图片。



BackTitle
设置背面Tile上的标题。



Count
设置当前主页面Tile上显示的所推送的消息数量,取值范围是0-99。



Title
设置主页面Tile上的标题


  
  下面来进行一些实例练习:
  >> 创建一个Secondary Tile



1 // 通过点击事件触发创建Secondary Tile的事件
2         private void button1_Click(object sender, RoutedEventArgs e)
3         {
4             // 下行代码表示确认是否已存在包含"ID=Wu"关键字的Secondary Tile
5             ShellTile find = ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString().Contains("ID=Wu"));
6
7             // 若没有则创建新的Secondary Tile
8             if (find == null)
9             {
10               StandardTileData data = new StandardTileData
11               {
12                     BackgroundImage = new Uri("/1.jpg", UriKind.Relative),
13                     Title = "SecondTile",
14                     Count = 99,
15                     BackTitle = "BackTitle",
16                     BackContent = "BackContent",
17                     BackBackgroundImage = new Uri("/2.jpg", UriKind.Relative)
18               };
19
20               // 调用Create方法创建,并设置该Secondary Tile所要跳转的页面的Uri和关键字参数
21               ShellTile.Create(new Uri("/Page1.xaml?ID=Wu", UriKind.Relative), data);
22             }
23         }
  上示代码完成之后还需对所跳转页面做一定的内容添加



1 public partial class Page1 : PhoneApplicationPage
2   {
3         public Page1()
4         {
5             InitializeComponent();
6         }
7         protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
8         {
9             base.OnNavigatedTo(e);
10
11             // 在PageTitle中显示传递过来的值
12             this.PageTitle.Text = this.NavigationContext.QueryString["ID"];
13         }
14   }
  
  >> 更新Application Tile



1 // 通过点击事件触发更新Tile事件
2         private void button2_Click(object sender, RoutedEventArgs e)
3         {
4             // 找到第一个Tile,也就是该App本身主Tile
5             ShellTile find = ShellTile.ActiveTiles.First();
6
7             // 若找到,则更新其内容
8             if (find != null)
9             {
10               StandardTileData data = new StandardTileData();
11               data.Title = "Update Tile";
12               data.BackgroundImage = new Uri("/1.jpg", UriKind.Relative);
13               data.Count = 20;
14               data.BackContent = "BackContent";
15               data.BackTitle = "Update Back Tile";
16               data.BackBackgroundImage = new Uri("/2.jpg", UriKind.Relative);
17
18               // 调用Update方法更新
19               find.Update(data);
20             }
21         }
  更新Secondary Tile的方法和更新Application Tile一样,只需在将
  ShellTile find = ShellTile.ActiveTiles.First();
  改为
  ShellTile find = ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString().Contains("ID=Wu"));
  即可。
页: [1]
查看完整版本: 《Windows Phone 7开发笔记》------Live Tile的实现