我正在编写一个Windows 8应用程序,并试图让实时图块工作。这是我到目前为止的所有内容(全部在App.xaml.cs
中):
在OnLaunched()
:
Window.Current.VisibilityChanged += Current_VisibilityChanged;
该事件的处理程序:
void Current_VisibilityChanged(object sender, Windows.UI.Core.VisibilityChangedEventArgs e)
{
// create a string with the tile template xml
string tileXmlString = "<tile><visual><binding template=\"TileSquareBlock\">" + App.VM.GetImageLinks() + "</binding></visual></tile>";
// create a DOM
Windows.Data.Xml.Dom.XmlDocument tileDOM = new Windows.Data.Xml.Dom.XmlDocument();
// load the xml string into the DOM, catching any invalid xml characters
tileDOM.LoadXml(tileXmlString);
// create a tile notification
TileNotification tile = new TileNotification(tileDOM);
// send the notification to the app's application tile
TileUpdateManager.CreateTileUpdaterForApplication().Update(tile);
}
App.VM.GetImageLinks()
返回:
<tile>
<visual>
<binding template=\"TileSquareBlock\">
<image id=\"1\">Assets/Img1.jpg</image>
<image id=\"2\">Assets/Img2.jpg</image>
<image id=\"3\">Assets/Img3.jpg</image>
</binding>
</visual>
</tile>
在那一刻,我基本上试图让这些图像显示在开始屏幕上。我的猜测是VisibilityChanged
是错误的事件,因为它似乎经常发生。
答案 0 :(得分:4)
正在使用的XML无效,因为TileSquareBlock模板不包含任何图像。请参阅tile template catalog以查看各种可视化模板及其相应的XML。
NotificationsExtensions库(在MSDN tiles sample中找到)提供了一个对象模型,它将图像和文本字段映射到命名属性。它提供了更多验证,可以简化您的代码。