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)建動態(tài)Tile。
WinRTLiveTileManager組件需要在終端用戶的機器上安裝一個單獨的DevExpress Live Tile Manager Windows Store應(yīng)用程序,也可以將其安裝在您的機器上來進行調(diào)試。DevExpress Live Tile Manager應(yīng)用程序可以很容易地在微軟Windows商店中找到,這個應(yīng)用程序作為WinRTLiveTileManager WinForms組件和Windows 8啟動畫面之間的橋梁。對于最終用戶來說,這個應(yīng)用程序提供了一個UI,允許他們通過WinRTLiveTileManager組件在Windows 8啟動畫面上固定和取消固定動態(tài)Tile:
Live Tile由以下可視化元素組成:
- Tile Content ——可能包括多個文本行或圖像取決于所選擇的平鋪模板,WinRTLiveTileManager支持微軟Tile模板目錄文章中列出的所有模板。
- Application Name——應(yīng)用程序名稱,顯示在動態(tài)Tile中,通過WinRTLiveTileManager.ApplicationName屬性指定。
- Badge——一個可選的元素,可以顯示一個整數(shù)值,也可以顯示一個包含的符號(錯誤、感嘆號、通知等),使用WinRTLiveTileManager.UpdateBadge方法來指定一個Tile Badge。
- Background Image ——默認的動態(tài)Tile圖像,通過WinRTLiveTileManager.DefaultTileImage屬性指定。每當調(diào)用WinRTLiveTileManager.UpdateTile方法來應(yīng)用一個新的Tile模板時,這個圖像就會被替換。
開始
要使用WinRTLiveTileManager控件,打開現(xiàn)有的Windows表單項目,在Visual Studio工具箱中找到WinRTLiveTileManager組件,并將其拖放到應(yīng)用程序表單中。
將承載WinForms應(yīng)用(應(yīng)用模塊)的ContainerControl對象賦值給WinRTLiveTileManager.ContainerControl屬性,以便將該應(yīng)用(模塊)與WinRTLiveTileManager組件關(guān)聯(lián)起來,您還可以指定WinRTLiveTileManager.ApplicationName屬性來設(shè)置在相應(yīng)的動態(tài)Tile中顯示的應(yīng)用程序名稱。
如果啟動應(yīng)用程序,然后切換到DevExpress Live Tile Manager Windows Store應(yīng)用程序,您會看到一個Tile。這個Tile可以固定在Windows 8的啟動畫面上,但它是靜態(tài)的,實際上還不是一個“Live”Tile。當應(yīng)用程序正在運行但不集中時,動態(tài)Tile顯示與當前應(yīng)用程序狀態(tài)相關(guān)的實時通知。要顯示這些通知,請使用winrtlivetilemanageredatetile方法,這個方法用WideTile和SquareTile對象作為參數(shù),這些對象分別包含大尺寸和普通尺寸Tile的Tile模板。下面的代碼演示了一個示例:
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模板命名,您可以參考Tile模板目錄文章,并使用相應(yīng)的方法來創(chuàng)建所需類型的Tile。
下圖展示了一個通過上面的代碼創(chuàng)建的寬平鋪和方形平鋪模板的例子。
如果在LiveTile中使用WideTile模板,您可以將null傳遞給WinRTLiveTileManager.UpdateTile方法,而不是SquareTile。但是強烈建議在更新動態(tài)Tile時同時傳遞一個WideTile和SquareTile對象,因為最終用戶可以通過標準的Windows 8方法手動調(diào)整Tile的大小(要做到這一點,右鍵單擊動態(tài)Tile,選擇它,然后點擊下面的應(yīng)用程序欄中的“Larger”或“Smaller”選項)。
您可以在更新動態(tài)Tile的內(nèi)容時選擇更新其徽章,下面的代碼為Tile設(shè)置了一個“New Message”標簽:
C#:
winRTLiveTileManager1.UpdateBadge(WinRTLiveTileManager.BadgeGlyphTypes.newMessage);
VB.NET:
winRTLiveTileManager1.UpdateBadge(WinRTLiveTileManager.BadgeGlyphTypes.newMessage)
如果應(yīng)用程序有多個模塊,且每個模塊都包含一個WinRTLiveTileManager組件,并且多個動態(tài)Tile固定在Windows 8開始屏幕上,此時可以獲得最終用戶點擊的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。每個WinRTLiveTileManager的ID是自動生成的,不可修改。