c# - 支持多种类型的动态磁贴

标签 c# visual-studio-2013 windows-phone-8.1

我想在我的应用程序中使用方形和诡异的磁贴。但是当我更新例如宽动态磁贴时,方形动态磁贴成为默认应用程序磁贴。当我更新 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);

方 block 更新代码

 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);

当我执行“方形瓷砖更新代码”时,我得到这样的方形瓷砖:

enter image description here

这么宽的瓷砖

enter image description here

之后我执行“宽磁贴更新代码” 得到这么宽的瓷砖:

enter image description here

和这样的方 block :

enter image description here

最佳答案

如果您要更新多种类型的图 block ,则需要在单个 TileNotification 中完成。任何未在 TileNotification 中设置的图 block 信息都将重置为默认值。为此,您需要创建 XmlDocument,使其在一个“可视”元素下具有不同的“绑定(bind)”元素(对应于每种类型的图 block )。

你的情况应该是这样的

//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);

关于c# - 支持多种类型的动态磁贴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29900134/

相关文章:

c# - Entity Framework 无法使用二进制数组添加迁移

c++ - 警告 C4316 : object allocated on the heap may not be aligned 16

C++ 异常未在线程中处理

c# - Windows Phone 8.1 导航到同一页面的新实例

c# - 加法与预增量失去 1

c# - 长时间运行的任务或线程?

c++ - trunc 函数是否很慢?

azure - WP Silverlight 后台任务与 Azure 的通信

windows-phone-8.1 - 如何从 Windows Phone 8.1 迁移到 UWP?

c# - 如何以编程方式取消选择 ListViewItem?