0

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

4

1 回答 1

4

使用的 XML 无效,因为 TileSquareBlock 模板不包含任何图像。查看磁贴模板目录以查看各种可视模板及其对应的 XML。

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

于 2012-10-01T13:24:23.117 回答