WinRTLiveTileManager
WinRTLiveTileManager組件只兼容Windows 8和Windows 8.1
概念
WinRTLiveTileManager組件允許您創(chuàng)建與Microsoft Windows 8操作系統(tǒng)完全兼容的Windows表單應(yīng)用程序,在Windows表單應(yīng)用程序中使用此組件在Windows 8開始屏幕中為該應(yīng)用程序創(chuàng)建動(dòng)態(tài)Tile。

WinRTLiveTileManager組件需要在終端用戶的機(jī)器上安裝一個(gè)單獨(dú)的DevExpress Live Tile Manager Windows Store應(yīng)用程序,也可以將其安裝在您的機(jī)器上來進(jìn)行調(diào)試。DevExpress Live Tile Manager應(yīng)用程序可以很容易地在微軟Windows商店中找到,這個(gè)應(yīng)用程序作為WinRTLiveTileManager WinForms組件和Windows 8啟動(dòng)畫面之間的橋梁。對(duì)于最終用戶來說,這個(gè)應(yīng)用程序提供了一個(gè)UI,允許他們通過WinRTLiveTileManager組件在Windows 8啟動(dòng)畫面上固定和取消固定動(dòng)態(tài)Tile:

Live Tile由以下可視化元素組成:

- Tile Content ——可能包括多個(gè)文本行或圖像取決于所選擇的平鋪模板,WinRTLiveTileManager支持微軟Tile模板目錄文章中列出的所有模板。
- Application Name——應(yīng)用程序名稱,顯示在動(dòng)態(tài)Tile中,通過WinRTLiveTileManager.ApplicationName屬性指定。
- Badge——一個(gè)可選的元素,可以顯示一個(gè)整數(shù)值,也可以顯示一個(gè)包含的符號(hào)(錯(cuò)誤、感嘆號(hào)、通知等),使用WinRTLiveTileManager.UpdateBadge方法來指定一個(gè)Tile Badge。
- Background Image ——默認(rèn)的動(dòng)態(tài)Tile圖像,通過WinRTLiveTileManager.DefaultTileImage屬性指定。每當(dāng)調(diào)用WinRTLiveTileManager.UpdateTile方法來應(yīng)用一個(gè)新的Tile模板時(shí),這個(gè)圖像就會(huì)被替換。
開始
要使用WinRTLiveTileManager控件,打開現(xiàn)有的Windows表單項(xiàng)目,在Visual Studio工具箱中找到WinRTLiveTileManager組件,并將其拖放到應(yīng)用程序表單中。

將承載WinForms應(yīng)用(應(yīng)用模塊)的ContainerControl對(duì)象賦值給WinRTLiveTileManager.ContainerControl屬性,以便將該應(yīng)用(模塊)與WinRTLiveTileManager組件關(guān)聯(lián)起來,您還可以指定WinRTLiveTileManager.ApplicationName屬性來設(shè)置在相應(yīng)的動(dòng)態(tài)Tile中顯示的應(yīng)用程序名稱。

如果啟動(dòng)應(yīng)用程序,然后切換到DevExpress Live Tile Manager Windows Store應(yīng)用程序,您會(huì)看到一個(gè)Tile。這個(gè)Tile可以固定在Windows 8的啟動(dòng)畫面上,但它是靜態(tài)的,實(shí)際上還不是一個(gè)“Live”Tile。當(dāng)應(yīng)用程序正在運(yùn)行但不集中時(shí),動(dòng)態(tài)Tile顯示與當(dāng)前應(yīng)用程序狀態(tài)相關(guān)的實(shí)時(shí)通知。要顯示這些通知,請(qǐng)使用winrtlivetilemanageredatetile方法,這個(gè)方法用WideTile和SquareTile對(duì)象作為參數(shù),這些對(duì)象分別包含大尺寸和普通尺寸Tile的Tile模板。下面的代碼演示了一個(gè)示例:
C#:
WideTile myWideTile = WideTile.CreateTileWideText03("Sample Tile"); SquareTile mySquareTile = SquareTile.CreateTileSquareBlock("14", "April"); winRTLiveTileManager1.UpdateTile(myWideTile, mySquareTile);
VB.NET:
Dim myWideTile As WideTile = WideTile.CreateTileWideText03("Sample Tile") Dim mySquareTile As SquareTile = SquareTile.CreateTileSquareBlock("14", "April") winRTLiveTileManager1.UpdateTile(myWideTile, mySquareTile)
提示:所有創(chuàng)建Tile的方法都用上面提到的相應(yīng)的Tile模板命名,您可以參考文章,并使用相應(yīng)的方法來創(chuàng)建所需類型的Tile。
下圖展示了一個(gè)通過上面的代碼創(chuàng)建的寬平鋪和方形平鋪模板的例子。

如果在LiveTile中使用WideTile模板,您可以將null傳遞給WinRTLiveTileManager.UpdateTile方法,而不是SquareTile。但是強(qiáng)烈建議在更新動(dòng)態(tài)Tile時(shí)同時(shí)傳遞一個(gè)WideTile和SquareTile對(duì)象,因?yàn)樽罱K用戶可以通過標(biāo)準(zhǔn)的Windows 8方法手動(dòng)調(diào)整Tile的大小(要做到這一點(diǎn),右鍵單擊動(dòng)態(tài)Tile,選擇它,然后點(diǎn)擊下面的應(yīng)用程序欄中的“Larger”或“Smaller”選項(xiàng))。

您可以在更新動(dòng)態(tài)Tile的內(nèi)容時(shí)選擇更新其徽章,下面的代碼為Tile設(shè)置了一個(gè)“New Message”標(biāo)簽:
C#:
winRTLiveTileManager1.UpdateBadge(WinRTLiveTileManager.BadgeGlyphTypes.newMessage);
VB.NET:
winRTLiveTileManager1.UpdateBadge(WinRTLiveTileManager.BadgeGlyphTypes.newMessage)
如果應(yīng)用程序有多個(gè)模塊,且每個(gè)模塊都包含一個(gè)WinRTLiveTileManager組件,并且多個(gè)動(dòng)態(tài)Tile固定在Windows 8開始屏幕上,此時(shí)可以獲得最終用戶點(diǎn)擊的Tile。為此,調(diào)用WinRTLiveTileManagerInitializeNavigation方法并處理WinRTLiveTileManagerOnNavigated事件,如下所示。
C#:
public Form1() { InitializeComponent(); WinRTLiveTileManager.InitializeNavigation(); WinRTLiveTileManager.OnNavigated += WinRTLiveTileManager_OnNavigated; . . . } void WinRTLiveTileManager_OnNavigated(string obj) { //do something }
VB.NET:
Public Sub Form1() InitializeComponent() WinRTLiveTileManager.InitializeNavigation() AddHandler WinRTLiveTileManager.OnNavigated, AddressOf WinRTLiveTileManager_OnNavigated ... End Sub Private Sub WinRTLiveTileManager_OnNavigated(ByVal obj As String) 'do something End Sub
obj參數(shù)返回相關(guān)的WinRTLiveTileManager ID (WinRTLiveTileManager.Id屬性),因此您可以檢查ID并獲得被單擊的LiveTile。每個(gè)WinRTLiveTileManager的ID是自動(dòng)生成的,不可修改。