TileUpdateManager.CreateTileUpdaterForApplication().EnableNotificationQueue(true);
#region 通知1
#region 定义方形磁贴
//获取模版,因为模版就是xml文档,所以此方法的返回值为XmlDocument类型的对象,在.net中就是使用XmlDocument对象操作xml文档
XmlDocument tileData = TileUpdateManager.GetTemplateContent(TileTemplateType.TileSquareImage);
/获取模版中的Img节点,因为此处使用的TagName来获取节点,模版中可能存在多个Img节点,所以返回值是XmlNodeList,是节点集合而不是单独的节点
XmlNodeList imgData = tileData.GetElementsByTagName("image");
/ //查看模版架构发现,模版中的image元素的图片源是通过src属性指定的,所以要设置取src属性(这是xml不是xaml)
//这里src是属性,不是普通节点,所以需要使用方法来设置
((XmlElement)imgData[0]).SetAttribute("src", "ms-appx:///Assets/small2.png");
/ //更改好模版之后,需要一个磁贴通知对象将其封装起来
#endregion
#region 定义宽型磁贴
XmlDocument largetileData = TileUpdateManager.GetTemplateContent(TileTemplateType.TileWideImage);
XmlNodeList largeimgData = largetileData.GetElementsByTagName("image");
((XmlElement)largeimgData[0]).SetAttribute("src", "ms-appx:///Assets/2.png");
IXmlNode newnode = largetileData.ImportNode(tileData.GetElementsByTagName("binding").Item(0), true);
largetileData.GetElementsByTagName("visual").Item(0).AppendChild(newnode);
TileNotification largenotification = new TileNotification(largetileData);
调用TileUpdateManager对象将通知发送到开始屏幕
TileUpdateManager.CreateTileUpdaterForApplication().Update(largenotification);
#endregion
#endregion
#region 通知2
#region 定义方形磁贴
XmlDocument tileData2 = TileUpdateManager.GetTemplateContent(TileTemplateType.TileSquareImage);
XmlNodeList imgData2 = tileData2.GetElementsByTagName("image");
((XmlElement)imgData2[0]).SetAttribute("src", "ms-appx:///Assets/small3.png");
#endregion
#region 定义宽型磁贴
XmlDocument largetileData2 = TileUpdateManager.GetTemplateContent(TileTemplateType.TileWideImage);
XmlNodeList largeimgData2 = largetileData2.GetElementsByTagName("image");
((XmlElement)largeimgData2[0]).SetAttribute("src", "ms-appx:///Assets/3.png");
IXmlNode newnode2 = largetileData2.ImportNode(tileData2.GetElementsByTagName("binding").Item(0), true); largetileData2.GetElementsByTagName("visual").Item(0).AppendChild(newnode2);
TileNotification largenotification2 = new TileNotification(largetileData2);
largenotification2.Tag = "tile2";
TileUpdateManager.CreateTileUpdaterForApplication().Update(largenotification2);
#endregion
#endregion
这样,自己做的项目就可以在开始屏幕上达到了,我们想要的效果,这里我只写了两个通知(列队通知最多5个),其余的大家可以试试。(上面的代码都有注释)
磁贴更新
1.获取模版,返回xml文档
2.从文档中获取指定节点
3.为节点的属性赋值
4.将方形磁贴附件到宽型磁贴上
5.定义通知
6.发送通知