根据用户

时间:2017-04-17 21:12:49

标签: uwp windows-10 windows-10-mobile live-tile

我在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 个答案:

答案 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模板
  

用户可以随时在“开始”屏幕上调整图块的大小,并且在发送通知时无法知道图块所处的状态(小,中,宽或大)。