|
在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"));
即可。 |
|
|