UWP 磁貼設置


一:需求

一款好看好用的應用,對於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----------


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM