我在Windows通用应用程序开发中从Square Tile切换到Wide Tile时遇到更新宽实时图块的问题。它在Windows表面和桌面上工作正常但不在手机上。它没有更新宽瓷砖有人可以帮帮我吗?
默认情况下,Wide Tile对我们来说工作正常,但是当我们将它从Square Tile更改为宽tile时,它在模拟器中无效。
以下是我们的总样本代码:
TileUpdateManager.CreateTileUpdaterForApplication().Clear();
TileUpdateManager.CreateTileUpdaterForApplication().EnableNotificationQueue(true);
var _tileXml = TileUpdateManager.GetTemplateContent(TileTemplateType.TileSquare150x150PeekImageAndText03);
var tileImage = _tileXml.GetElementsByTagName("image")[0] as Windows.Data.Xml.Dom.XmlElement;
tileImage.SetAttribute("src", "ms-appx:///Assets/Logo.png");
var tileText = _tileXml.GetElementsByTagName("text");
(tileText[0] as Windows.Data.Xml.Dom.XmlElement).InnerText = "xyz";
(tileText[1] as Windows.Data.Xml.Dom.XmlElement).InnerText = "ABC";
(tileText[2] as Windows.Data.Xml.Dom.XmlElement).InnerText = "EFGH";
(tileText[3] as Windows.Data.Xml.Dom.XmlElement).InnerText = "IJKL";
var tileNotification = new TileNotification(_tileXml);
TileUpdateManager.CreateTileUpdaterForApplication().Update(tileNotification);
Windows.Data.Xml.Dom.XmlDocument tileXml = TileUpdateManager.GetTemplateContent(TileTemplateType.TileWide310x150PeekImageAndText02);
var tileText1 = tileXml.GetElementsByTagName("text");
(tileText1[0] as Windows.Data.Xml.Dom.XmlElement).InnerText ="xyz";
(tileText1[1] as Windows.Data.Xml.Dom.XmlElement).InnerText = "ABC";
(tileText1[2] as Windows.Data.Xml.Dom.XmlElement).InnerText = "EFGH";
(tileText1[3] as Windows.Data.Xml.Dom.XmlElement).InnerText ="IJKL";
(tileText1[4] as Windows.Data.Xml.Dom.XmlElement).InnerText = "Sample App";
var tileImage = tileXml.GetElementsByTagName("image")[0] as Windows.Data.Xml.Dom.XmlElement;
tileImage1.SetAttribute("src", "ms-appx:///Assets/Wide310x150Logo.Scale-100.png");//Assets\Wide310x150Logo.png
TileUpdateManager.CreateTileUpdaterForApplication().Update(new TileNotification(tileXml));
谢谢,
马杜。
答案 0 :(得分:0)
首先,您最好使用NotificationsExtensions而不是使用xml模式,这样更容易使用。
然后,您的代码有问题。通过使用官方库NotificationsExtensions
,更新磁贴的代码应如下所示:
//small
var smallTileContent = TileContentFactory.CreateTileSquare71x71Image();
smallTileContent.Image.Src = "ms-appdata:///local/" + smallName;
//medium
var mediumTileContent = TileContentFactory.CreateTileSquare150x150Image();
mediumTileContent.RequireSquare71x71Content = true;
mediumTileContent.Square71x71Content = smallTileContent;
mediumTileContent.Image.Src = "ms-appdata:///local/" + middleName;
mediumTileContent.Branding = TileBranding.Logo;
//wide
var wideTileContent = TileContentFactory.CreateTileWide310x150Image();
wideTileContent.RequireSquare150x150Content = true;
wideTileContent.Square150x150Content = mediumTileContent;
wideTileContent.Image.Src = "ms-appdata:///local/" + wideName;
wideTileContent.Branding = TileBranding.Logo;
var largeTileContent = TileContentFactory.CreateTileSquare310x310Image();
largeTileContent.RequireWide310x150Content = true;
largeTileContent.Wide310x150Content = wideTileContent;
largeTileContent.Image.Src = "ms-appdata:///local/" + largeName;
largeTileContent.Branding = TileBranding.Logo;
//Enable notification queue
TileUpdateManager.CreateTileUpdaterForApplication().EnableNotificationQueue(true);
var notification = largeTileContent.CreateNotification();
TileUpdateManager.CreateTileUpdaterForApplication().Update(notification);