2017-04-17 19 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