Windows 8 Live Tile Update无法正常工作

时间:2012-10-01 12:05:52

标签: windows-8 microsoft-metro windows-runtime live-tile

我正在编写一个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是错误的事件,因为它似乎经常发生。

1 个答案:

答案 0 :(得分:4)

正在使用的XML无效,因为TileSquareBlock模板不包含任何图像。请参阅tile template catalog以查看各种可视化模板及其相应的XML。

NotificationsExtensions库(在MSDN tiles sample中找到)提供了一个对象模型,它将图像和文本字段映射到命名属性。它提供了更多验证,可以简化您的代码。