支持多种类型的动态磁贴
Support several types of live tiles
我想在我的应用程序中添加方形和诡异的瓷砖。但是当我更新例如宽动态磁贴时,方形动态磁贴成为默认应用程序磁贴。当我更新 wide square tile 时,wide tile 成为默认值。
宽磁贴更新代码
var TileMgr = TileUpdateManager.CreateTileUpdaterForApplication();
var tileTemplate = TileUpdateManager.GetTemplateContent(TileTemplateType.TileWide310x150Image);
XmlElement tmp = tileTemplate.GetElementsByTagName("visual")[0] as XmlElement;
tmp.SetAttribute("branding", "none");
var tileImageAttributes = tileTemplate.GetElementsByTagName("image");
tmp = tileImageAttributes[0] as XmlElement;
tmp.SetAttribute("src", "UpdatedLiveTileWide.png");
var notification = new TileNotification(tileTemplate);
TileMgr.Update( notification);
方块更新代码
var TileMgr = TileUpdateManager.CreateTileUpdaterForApplication();
var tileTemplate = TileUpdateManager.GetTemplateContent(TileTemplateType.TileSquare150x150Image);
XmlElement tmp = tileTemplate.GetElementsByTagName("visual")[0] as XmlElement;
tmp.SetAttribute("branding", "none");
var tileImageAttributes = tileTemplate.GetElementsByTagName("image");
tmp = tileImageAttributes[0] as XmlElement;
tmp.SetAttribute("src", "UpdatedLiveTile.png");
var notification = new TileNotification(tileTemplate);
TileMgr.Update(notification);
当我执行 "code for square tile update" 时,我得到这样的正方形瓷砖:
这么宽的瓷砖
之后我执行"code for wide tile update"
得到这么宽的瓷砖:
和这样的方形瓷砖:
如果您要更新一种以上类型的图块,则需要一次性完成 TileNotification
。 TileNotification
中未设置的任何图块信息都将重置为默认值。为此,您需要创建 XmlDocument
,使其在一个 'visual' 元素下具有不同的 'binding' 元素(对应于每种类型的图块)。
你的情况应该是这样的
//Create medium tile update
XmlDocument mediumTemplate = TileUpdateManager.GetTemplateContent(TileTemplateType.TileSquare150x150Image);
(mediumTemplate.GetElementsByTagName("image")[0] as XmlElement).SetAttribute("src", "UpdatedLiveTile.png");
//Create wide tile update
XmlDocument wideTemplate = TileUpdateManager.GetTemplateContent(TileTemplateType.TileWide310x150Image);
(wideTemplate.GetElementsByTagName("image")[0] as XmlElement).SetAttribute("src", "UpdatedLiveTileWide.png");
//Import the 'binding' node from wideTemplate
var wideBinding = mediumTemplate.ImportNode(wideTemplate.GetElementsByTagName("binding")[0], true);
//Add it under 'visual' node in mediumTemplate
var visualElement = mediumTemplate.GetElementsByTagName("visual")[0];
visualElement.AppendChild(wideBinding);
(visualElement as XmlElement).SetAttribute("branding", "none");
//Now the mediumTemplate has bindings for both medium and wide tile
//Create tile notification using mediumTemplate and update
TileNotification notification = new TileNotification(mediumTemplate);
TileUpdateManager.CreateTileUpdaterForApplication().Update(notification);
我想在我的应用程序中添加方形和诡异的瓷砖。但是当我更新例如宽动态磁贴时,方形动态磁贴成为默认应用程序磁贴。当我更新 wide square tile 时,wide tile 成为默认值。
宽磁贴更新代码
var TileMgr = TileUpdateManager.CreateTileUpdaterForApplication();
var tileTemplate = TileUpdateManager.GetTemplateContent(TileTemplateType.TileWide310x150Image);
XmlElement tmp = tileTemplate.GetElementsByTagName("visual")[0] as XmlElement;
tmp.SetAttribute("branding", "none");
var tileImageAttributes = tileTemplate.GetElementsByTagName("image");
tmp = tileImageAttributes[0] as XmlElement;
tmp.SetAttribute("src", "UpdatedLiveTileWide.png");
var notification = new TileNotification(tileTemplate);
TileMgr.Update( notification);
方块更新代码
var TileMgr = TileUpdateManager.CreateTileUpdaterForApplication();
var tileTemplate = TileUpdateManager.GetTemplateContent(TileTemplateType.TileSquare150x150Image);
XmlElement tmp = tileTemplate.GetElementsByTagName("visual")[0] as XmlElement;
tmp.SetAttribute("branding", "none");
var tileImageAttributes = tileTemplate.GetElementsByTagName("image");
tmp = tileImageAttributes[0] as XmlElement;
tmp.SetAttribute("src", "UpdatedLiveTile.png");
var notification = new TileNotification(tileTemplate);
TileMgr.Update(notification);
当我执行 "code for square tile update" 时,我得到这样的正方形瓷砖:
这么宽的瓷砖
之后我执行"code for wide tile update" 得到这么宽的瓷砖:
和这样的方形瓷砖:
如果您要更新一种以上类型的图块,则需要一次性完成 TileNotification
。 TileNotification
中未设置的任何图块信息都将重置为默认值。为此,您需要创建 XmlDocument
,使其在一个 'visual' 元素下具有不同的 'binding' 元素(对应于每种类型的图块)。
你的情况应该是这样的
//Create medium tile update
XmlDocument mediumTemplate = TileUpdateManager.GetTemplateContent(TileTemplateType.TileSquare150x150Image);
(mediumTemplate.GetElementsByTagName("image")[0] as XmlElement).SetAttribute("src", "UpdatedLiveTile.png");
//Create wide tile update
XmlDocument wideTemplate = TileUpdateManager.GetTemplateContent(TileTemplateType.TileWide310x150Image);
(wideTemplate.GetElementsByTagName("image")[0] as XmlElement).SetAttribute("src", "UpdatedLiveTileWide.png");
//Import the 'binding' node from wideTemplate
var wideBinding = mediumTemplate.ImportNode(wideTemplate.GetElementsByTagName("binding")[0], true);
//Add it under 'visual' node in mediumTemplate
var visualElement = mediumTemplate.GetElementsByTagName("visual")[0];
visualElement.AppendChild(wideBinding);
(visualElement as XmlElement).SetAttribute("branding", "none");
//Now the mediumTemplate has bindings for both medium and wide tile
//Create tile notification using mediumTemplate and update
TileNotification notification = new TileNotification(mediumTemplate);
TileUpdateManager.CreateTileUpdaterForApplication().Update(notification);