WP7 - Secondary Tiles 將自訂功能釘在首頁!

WP7–Secondary Tiles 將自訂功能釘在首頁!

這是在 window phone os 7.1 出的新功能

以前只能將APP主程式釘在首頁~釘在首頁的『磚』稱作 Application Tile

現在可以自己決定要釘甚麼東西在首頁了!!~自訂的『磚』就稱作 Secondary Tile

而且實作起來非常容易

首先先講解一下『磚』的內容

這兩張圖是從MSDN 內的說明圖

Secondary Tile 有兩面~前面和後面~@@

可以放的內容就如圖示說的一樣~

圖片可以是程式自己提供,也可以是網路上的圖。

 

接著就來寫程式拉~~

首先要加入

using Microsoft.Phone.Shell

接著產生一個 StandardTileData,如下

   1: StandardTileData data = new StandardTileData();
   2: data.BackContent = "BackContent";
   3: data.BackTitle = "BackTitle";
   4: data.BackBackgroundImage = new Uri("face.png", UriKind.Relative);
   5: data.Count = 1;
   6: data.BackgroundImage = new Uri("face.png", UriKind.Relative);
   7: data.Title = "SecondaryTile";
   8:  
   9: ShellTile.Create(new Uri("/Page1.xaml?sss=a", UriKind.Relative), data);

 

StandardTileData 的內容很簡單~應該一看就懂!!

最後再呼叫ShellTile.Create 函式就完成囉

ShellTile.Create 裡面第一個參數就是此 Secondary Tile 點下去後會進入的頁面

這裡有一個限制~就是頁面一定要有參數,就像上面程式碼範例裡的『?sss=a 』

參數名稱和內容隨意~不過一定要有!~不然進不了頁面

 

這是執行結果

image

 

一個程式可以釘很多 Secondary Tile 在首頁上

但是名稱一定要不一樣,或者說比對的 KEY 要不同

Secondary Tile 用來比對的 KEY 就是 ShellTile.Create 的第一個參數,也就是開啟的頁面URI

所以不行釘兩個相同頁面的 tile 在首頁上,通常就用頁面後面加的參數來區分囉!

 

如果我們釘了Secondary Tile 在首頁上

也可以在程式裡更新 Secondary Tile 的內容,或是移除等控制

想要對已經釘出去的專做控制首先就是要先找到她

程式啟動後,在 ShellTile.ActiveTiles 內會存在所有這個程式產生的 Tile,包括主程式。

所以即使沒有增加過 Secondary Tile,也至少會有一個主程式的tile

用LINQ搜尋URI來尋找想要找的 Secondary Tile,例如下面這樣

   1: ShellTile tile = ShellTile.ActiveTiles.FirstOrDefault((t) => t.NavigationUri.ToString().Equals("/Page1.xaml?sss=a"));

如果想要更新 Tile 就只要再新增一個 StandardTileData,然後再 Update 即可~

   1: StandardTileData newData = new StandardTileData {
   2:     Title = "NewTitle",
   3:     Count = 2,
   4: };
   5: tile.Update(newData);

想要刪除的話也只要呼叫 Delete()

   1: tile.Delete();

 

真是簡單又實用的功能!