31 Days of Windows 8 -- Live Tiles:http://www.jeffblankenburg.com/2012/11/09/31-days-of-windows-8-day-9-live-tiles/
MSDN--創(chuàng)建瓷貼和鎖屏 : http://msdn.microsoft.com/library/windows/apps/Hh465377
創(chuàng)建瓷貼的步驟:
1. 命名空間:


2. 選取模板 http://msdn.microsoft.com/zh-CN/library/windows/apps/xaml/windows.ui.notifications.tiletemplatetype
3. 設(shè)置模板中的屬性,最好將WideTile和SquareTile合并在一起,這樣不論你的Tile是哪種形態(tài)都有動態(tài)效果。
4. 更新Tile
下面是一個完整步驟:
1
using namespace Windows::UI::Notifications; // Notification命名空間
2
using namespace Windows::Data::Xml::Dom; // DOM標準函數(shù)命名空間
3
namespace WFC = Windows::Foundation::Collections;
4
5
XmlDocument^ tileXml = TileUpdateManager::GetTemplateContent(TileTemplateType::TileWideImageAndText01);//獲得模板
6
7
XmlNodeList^ tileTextAttributes = tileXml->GetElementsByTagName("text");
8
tileTextAttributes->Item(0)->InnerText = "Hello World! My very own tile notification";//設(shè)置text屬性
9
10
XmlNodeList^ tileImageAttributes = tileXml->GetElementsByTagName("image");
11
static_cast<XmlElement^>(tileImageAttributes->Item(0))->SetAttribute("src", "ms-appx:///images/redWide.png"); //此處如果要使用Assets中的圖片的話,直接用SetAttribute("src","Tile.png");
12
static_cast<XmlElement^>(tileImageAttributes->Item(0))->SetAttribute("alt", "red graphic");// 設(shè)置image屬性
13
14
XmlDocument^ squareTileXml = TileUpdateManager::GetTemplateContent(TileTemplateType::TileSquareText04); //獲得方形模板
15
XmlNodeList^ squareTileTextAttributes = squareTileXml->GetElementsByTagName("text");
16
squareTileTextAttributes->Item(0)->AppendChild(squareTileXml->CreateTextNode("Hello World! My very own tile notification"));//設(shè)置text屬性
17
IXmlNode^ node = tileXml->ImportNode(squareTileXml->GetElementsByTagName("binding")->GetAt(0), true);
18
tileXml->GetElementsByTagName("visual")->Item(0)->AppendChild(node);//將方形模板插入Wide模板
19
20
TileNotification^ tileNotification = ref new TileNotification(tileXml);
21
22
int seconds = 10;
23
auto cal = ref new Windows::Globalization::Calendar();
24
cal->AddSeconds(seconds);
25
tileNotification->ExpirationTime = cal->GetDateTime();//設(shè)置消失時間
26
27
TileUpdateManager::CreateTileUpdaterForApplication()->Update(tileNotification); //顯示Tile
28
29

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

也可以使用XML文件設(shè)置屬性:
1
// create a string with the tile template xml
2
auto tileXmlString = "<tile>"
3
+ "<visual>"
4
+ "<binding template='TileWideText03'>"
5
+ "<text id='1'>Hello World! My very own tile notification</text>"
6
+ "</binding>"
7
+ "<binding template='TileSquareText04'>"
8
+ "<text id='1'>Hello World! My very own tile notification</text>"
9
+ "</binding>"
10
+ "</visual>"
11
+ "</tile>";
12
13
// create a DOM
14
auto tileDOM = ref new Windows::Data::Xml::Dom::XmlDocument();
15
16
// load the xml string into the DOM, catching any invalid xml characters
17
tileDOM->LoadXml(tileXmlString);
18
19
// create a tile notification
20
auto tile = ref new TileNotification(tileDOM);
21
22
// Send the notification to the app's application tile
23
TileUpdateManager::CreateTileUpdaterForApplication()->Update(tile);
24
25
OutputTextBlock->Text = tileDOM->GetXml();

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

清理瓷貼
TileUpdateManager::CreateTileUpdaterForApplication()->Clear();
使用瓷貼隊列
一個應(yīng)用程序中最多能使用5個瓷貼,如果開啟了瓷貼隊列,會按照先后順序放入隊列中。之后TileNotification的顯示時間和顯示順序?qū)⒉皇艹绦蚩刂疲@時的控制權(quán)是在系統(tǒng)手中的。
為了便于控制瓷貼的顯示,我們一般給瓷貼一個Tag用于辨識,當新的瓷貼的Tag與舊瓷貼的Tag相同時,舊瓷貼被新瓷貼代替。如果不同,隊列頭上的瓷貼被踢出隊列。
最近的瓷貼總是被立即顯示。另外,當隊列中已經(jīng)有了5個瓷貼的時候,其中一個使用了Expirate,那么當這個瓷貼消失之后,將不再在隊列中,也不會再顯示它了。
使用瓷貼隊列的方法是:
TileUpdateManager::CreateTileUpdaterForApplication()->EnableNotificationQueue(true);
禁止瓷貼隊列的方法:
TileUpdateManager::CreateTileUpdaterForApplication()->EnableNotificationQueue(false);
瓷貼的圖片問題
用于Tile的圖片不能大于200K,像素不能大于1024*1024,但是我們的Tile最大是310*150,所以我們在使用圖片的時候要考慮到大小問題。