一:需求
一款好看好用的應用,對於UWP來說,動態的磁貼必不可少。
二:TileUpdateManager類 和TileUpdater類
如果需要更改或更新應用的磁貼,那么首先需要獲得TileUpdater對象,顧名思義,TileUpdater就是磁貼的更新器。
通過TileUpdateManager類得到TileUpdater對象
TileUpdater tileUpdater = TileUpdateManager.CreateTileUpdaterForApplication();
三:TileUpdater 磁貼更新器類
3.1 清空應用的磁貼
TileUpdater 有一個clear()方法用於清空當前應用的磁貼的內容,恢復為默認模式,默認就是一個軟件的logo。該方法可以用於軟件內點擊按鈕關閉動態磁貼的功能。
//刪除所有更新並將平鋪導致以顯示其默認內容(如應用程序清單所聲明)。 public void Clear();
tileUpdater.Clear();
3.2 更新磁貼
TileUpdater 有一個Update() 方法,用於更新磁貼,可以說是比較關鍵的方法了。先來看看方法的定義。
// 將內容或外觀的更改應用於圖塊。 // notification: // 為平鋪的內容提供新的 XML 定義的對象。 public void Update(TileNotification notification);
參數需要提供一個 TileNotification 對象。查看TileNotification類的構造函數可以發現
public TileNotification(XmlDocument content);
TileNotification類的構造函數需要傳遞進一個XmlDocument對象。
實際上磁貼的模板就是一個xml的文件。TileNotification 對象就是用來放要更新的磁貼的模板。
四:磁鐵模板
磁貼的模板可以用微軟預定的磁貼模板,或者自己定義模板。
4.1獲取微軟預設的磁貼模板
XmlDocument xml = TileUpdateManager.GetTemplateContent(TileTemplateType.TileSquare150x150Block);
TileTemplateType里有很多微軟預設的磁貼的模板,主要是根據不同的磁貼大小,微軟自己預設的磁貼。
4.2 創建自適應磁貼模板
自適應磁貼是win10一項新的功能,允許我們針對不同的磁貼大小設定模板。
既然磁貼的模板是xml格式的,那么它就是標記性語言。你可以像xaml那樣,或者用類的方式定義。
請安裝名為 Microsoft.Toolkit.Uwp.Notifications 的 NuGet 程序包(搜索“notifications uwp”)
xml格式:
<tile>
<visual>
<binding template="TileSmall">
<text>Small</text>
</binding>
<binding template="TileMedium">
<text>Medium</text>
</binding>
<binding template="TileWide">
<text>Wide</text>
</binding>
<binding template="TileLarge">
<text>Large</text>
</binding>
</visual>
</tile>
c#格式
TileContent content = new TileContent() { Visual = new TileVisual() { TileSmall = new TileBinding() { Content = new TileBindingContentAdaptive() { Children = { new AdaptiveText() { Text = "Small" } } } }, TileMedium = new TileBinding() { Content = new TileBindingContentAdaptive() { Children = { new AdaptiveText() { Text = "Medium" } } } }, TileWide = new TileBinding() { Content = new TileBindingContentAdaptive() { Children = { new AdaptiveText() { Text = "Wide" } } } }, TileLarge = new TileBinding() { Content = new TileBindingContentAdaptive() { Children = { new AdaptiveText() { Text = "Large" } } } } } };
這個自適應的磁貼也僅僅是針對四種狀體的磁貼定義的。因為微軟的磁貼也只能有(小,中,寬,大)四種形態。分別對應(TileSmall,TileMedium ,TileWide,TileLarge)。在每種狀態里,添加你需要內容即可。你可以添加PeekImage,BackgroundImage,AdaptiveText等。
如果你用的是c#寫的磁貼模板,有一個TileContent.Getxml() 方法用於將c#代碼轉化成xml。
這樣你再創建一個TileNotification對象,通過TileUpdater.update()就可以更新磁貼了。
var xmlDocument= content.GetXml(); TileNotification tileNotification = new TileNotification(xmlDocument);
TileUpdater tileUpdater = TileUpdateManager.CreateTileUpdaterForApplication(); tileUpdater.Update(tileNotification);
微軟開發者文檔地址:https://docs.microsoft.com/zh-cn/windows/uwp/controls-and-patterns/tiles-and-notifications-create-adaptive-tiles
-------some words-------
1.Notification 通知
2..tile 磁貼
---------the end----------
