1

我的应用程序的 App.xaml.cs 页面包含以下方法。

public static void SendLiveTileUpdate(Record rr)
{
    string imageUristring = "ms-appdata:///local/" + rr.Id.ToString() + ".jpg";

    XmlDocument wideTileXml = TileUpdateManager.GetTemplateContent(TileTemplateType.TileWideImageAndText01);

    XmlNodeList wideTileTextAttrib = wideTileXml.GetElementsByTagName("text");
    wideTileTextAttrib[0].InnerText = rr.Name;

    XmlNodeList wideTileImageAttrib = wideTileXml.GetElementsByTagName("image");

    //((XmlElement)wideTileImageAttrib[0]).SetAttribute("src", "ms-appdata:///local/" + rr.Id.ToString() + ".jpg");
    ((XmlElement)wideTileImageAttrib[0]).SetAttribute("src", imageUristring);
    ((XmlElement)wideTileImageAttrib[0]).SetAttribute("alt", "Image");

    //Wide tile Layout done

    XmlDocument sqTileXml = TileUpdateManager.GetTemplateContent(TileTemplateType.TileSquareImage);

    XmlNodeList sqTileImageAttrib = sqTileXml.GetElementsByTagName("image");
    ((XmlElement)sqTileImageAttrib[0]).SetAttribute("src", imageUristring);
    ((XmlElement)sqTileImageAttrib[0]).SetAttribute("alt", "Image");

    IXmlNode node = wideTileXml.ImportNode(sqTileXml.GetElementsByTagName("binding").Item(0), true);
    wideTileXml.GetElementsByTagName("visual").Item(0).AppendChild(node);

    //Square tile set and added to wide tile xml

    TileNotification tileNot = new TileNotification(wideTileXml);

    tileNot.ExpirationTime = DateTime.Now.AddDays(5);

    updater.Update(tileNot);
}

在页面上还有全局变量 updater,它用于在页面初始化时调用EnableNotificationQueue(true)(然后稍后更新队列,如图所示)。

问题是当这段代码运行时它不起作用。我推断这与图像有关,因为当图像分配被排除时,实时磁贴更新值为rr.Id.ToString(),但包含磁贴永远不会更新。引用的此图像imageUristring存在于应用程序本地存储中(并且名称与方法参数的 Id 对应),但它仍然不起作用。有问题的图像小于 200KB,尺寸为 1920x1080。(我认为它们会被缩放以适应瓷砖?)

我究竟做错了什么?如何使用存储在本地存储中的图像更新磁贴?

4

1 回答 1

2

您的图像必须 <= 1024x1024。来自http://msdn.microsoft.com/en-us/library/windows/apps/Hh781198.aspx

平铺图像的尺寸必须小于或等于 1024x1024 像素,文件大小必须小于或等于 200 KB,并且类型必须为 .png、.jpg、.jpeg 或 .gif。

于 2013-04-07T02:59:10.687 回答