在Live Tile XML中使用contentId来覆盖以前的Tile

时间:2017-05-03 14:41:09

标签: c# xaml uwp

我尝试在我的tile XML中使用了https://docs.microsoft.com/en-us/windows/uwp/controls-and-patterns/tiles-and-notifications-adaptive-tiles-schema中描述的contentId。下面是我的XML示例。

<tile>
<visual version="2">
    <binding branding="name" contentId="@ViewBag.Code" template="TileSquare150x150Text01" fallback="TileSquareText01">
        <text id="1">@ViewBag.Name (@ViewBag.Platform)</text>
        <text id="2">@ViewBag.When1 @ViewBag.Destination1</text>
        <text id="3">@ViewBag.When2 @ViewBag.Destination2</text>
        <text id="4">@ViewBag.When3 @ViewBag.Destination3</text>
    </binding>
    <binding branding="name" contentId="@ViewBag.Code" template="TileWide310x150Text01" fallback="TileWideText01">
        <text id="1">@ViewBag.Name (@ViewBag.Platform)</text>
        <text id="2">@ViewBag.When1 @ViewBag.Destination1</text>
        <text id="3">@ViewBag.When2 @ViewBag.Destination2</text>
        <text id="4">@ViewBag.When3 @ViewBag.Destination3</text>
        <text id="5">@ViewBag.When4 @ViewBag.Destination4</text>
    </binding>
    <binding branding="name" contentId="@ViewBag.Code" template="TileSquare310x310Text01">
        <text id="1">@ViewBag.Name (@ViewBag.Platform)</text>
        <text id="2">@ViewBag.When1 @ViewBag.Destination1</text>
        <text id="3">@ViewBag.When2 @ViewBag.Destination2</text>
        <text id="4">@ViewBag.When3 @ViewBag.Destination3</text>
        <text id="5">@ViewBag.When4 @ViewBag.Destination4</text>
        <text id="6">@ViewBag.When5 @ViewBag.Destination5</text>
        <text id="7">@ViewBag.When6 @ViewBag.Destination6</text>
        <text id="8">@ViewBag.When7 @ViewBag.Destination7</text>
        <text id="9">@ViewBag.When8 @ViewBag.Destination8</text>
        <text id="10">@ViewBag.When9 @ViewBag.Destination9</text>
    </binding>
</visual>
</tile>

我将EnableNotificationQueue设置为true,并且我从远程源一次拉入3个磁贴,这可以正常工作。但是,不是使用相同的contentId覆盖先前的tile,而是将新的tile添加到EnableNotificationQueue允许的最大堆栈5。

我想要实现的是当更新发生时,将3个先前的磁贴覆盖为新的磁贴,而不是将新的磁贴添加到堆栈中。从阅读文档内容我应该让我这样做,但它没有按预期工作。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

我设法通过在文档中找到深层内容来解决此问题。基本上contentId没有做任何事情,你必须标记磁贴通知。如果您在Azure上托管ASP.NET Web服务,就像我一样,您必须将标记作为HTTP响应标头的一部分发送。

我修改了我的控制器以包含HttpContext.Response.AddHeader(“X-WNS-Tag”,“yourtag”)以及任何带有相同标签的未来磁贴通知,使用该标记覆盖前一个 - 这是我希望实现的行为。