我在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);
}
提前感谢您对此问题的任何帮助。
答案 0 :(得分: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>
这同样适用于Quickstart: Sending a tile update (XAML)
中显示的Windows 8.1模板用户可以随时在“开始”屏幕上调整图块的大小,并且在发送通知时无法知道图块所处的状态(小,中,宽或大)。