2017-04-17 48 views
0

我在我的UWP應用程序中面臨Live Tiles的問題。 Microsoft爲不同的圖塊大小提供了不同的模板(MSDN)來設置內容,但它也取決於設備如何顯示內容。根據用戶固定的圖塊大小更新動態拼貼

例如,寬瓦在移動設備上可以顯示比單個行中的臺式計算機更多的字符,但是我希望使用大部分區域來顯示信息。假設用戶已將我的應用程序安裝在臺式計算機上,並且他已將大方形圖塊固定到他的開始菜單。如何檢測圖塊大小以加載適當的模板?基本上我只是想根據用戶固定的磁貼使用不同的模板(然後我想根據使用的設備處理內容的填充,但我已經覆蓋了這些內容)。

目前我只是使用一個寬的模板,如果用戶固定任何其他大小,而不是寬的模板。如果用戶釘住寬瓦片,它就可以工作。但我正在努力爲這個問題找到一個通用的解決方案。我正在使用SheduledTileNotifications,因爲我的應用程序只使用本地數據作爲瓦片內容。

這是我的代碼更新與給定模板瓷磚:

public static void UpdatePrimaryTile(XmlDocument tileTemplate) 
{ 
    var dt = DateTime.Now.AddSeconds(5); 
    dt = DateTime.SpecifyKind(dt, DateTimeKind.Unspecified); 
    var not = new ScheduledTileNotification(tileTemplate, new DateTimeOffset(dt, TimeZoneInfo.Local.BaseUtcOffset)); 
    var tu = TileUpdateManager.CreateTileUpdaterForApplication(); 
    tu.EnableNotificationQueue(true); 
    tu.Clear(); 
    tu.AddToSchedule(not); 
} 

感謝您提前瞭解有關此問題的任何幫助。

回答

1

你應該在tileTemplate中包含所有的瓷磚尺寸,而不僅僅是寬的瓷磚​​。這樣,無論用戶選擇哪種方式都會顯示適當的圖塊。

只顯示當前選擇的圖塊模板是不夠的,因爲用戶可能會在通知被觸發後對其進行更改。

如果你看看自適應瓷磚文檔在https://docs.microsoft.com/en-us/windows/uwp/controls-and-patterns/tiles-and-notifications-create-adaptive-tiles它說:

對於單磚通知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> 

這同樣適用於Windows的8.1模板,如圖Quickstart: Sending a tile update (XAML)

用戶可以隨時在「開始」屏幕上調整拼貼的大小,並且無法知道發送通知時拼貼所處的狀態(小,中,大或大)。

+0

我不知道可以在一個模板中添加多個尺寸,我必須在文檔中跳過該部分。我會嘗試一下並儘快標記這個答案。謝謝! – xmashallax