Windows 8的磁贴定期更新

3

我想定期更新Windows 8的Live Tile,比如每隔10秒钟。有没有办法实现这个功能?我正在使用Windows 8的Metro XAML C#。

下面是我在Dispatcher Timer的Tick事件中编写的代码:

switch(imageIndex)
{
    case  0:
        imageUrl = "Assets/Image1.png";
        break;
    case 1:
        imageUrl = "Assets/Image1.png";
        break;
    case 2:
        imageUrl = "Assets/Image1.png";
        break;        
}

ITileWIdeImageAndText01 tileContent = TileContentFactory.CreateTileWideImageAndText01();
tileContent.TextCaptionWrap.Text = "Hello";
tileContent.Image.Src = imageUrl;
tileContent.Image.Alt = "";

ITileSquareImage squareContent = TileContentFactory.CreateTileSquareImage();
squareContent.Image.Src = imageUrl;
squareContent.Image.Alt = "";
tileContent.SquareContent = squareContent;

TileUpdateManager.CreateTileUpdaterForApplication().Update(tileContent.CreateNotification());

感谢您的预先支持。
谢谢。

你想要在动态磁贴中更新什么?图片还是文字? - Sajid
抱歉,我的问题表述不够清晰。我想更新图片。我有三张图片,希望在10秒后显示。目前我可以使用DispatcherTimer实现这一点,但是图片会瞬间更换,没有像其他默认瓷砖那样得到动画效果。 - Anup Vasudeva
2个回答

0

以下是您应该这样做的方法:

switch(imageIndex)
{
    case  0:
        imageUrl = "Assets/Image1.png";
        break;
    case 1:
        imageUrl = "Assets/Image1.png";
        break;
    case 2:
        imageUrl = "Assets/Image1.png";
        break;        
}

ITileWIdeImageAndText01 tileContent = TileContentFactory.CreateTileWideImageAndText01();
tileContent.TextCaptionWrap.Text = "Hello";
tileContent.Image.Src = imageUrl;
tileContent.Image.Alt = "";

ITileSquareImage squareContent = TileContentFactory.CreateTileSquareImage();
squareContent.Image.Src = imageUrl;
squareContent.Image.Alt = "";
tileContent.SquareContent = squareContent;


var updater = TileUpdateManager.CreateTileUpdaterForApplication();
updater.EnableNotificationQueue(true);

updater.AddToSchedule(
    new ScheduledTileNotification(
        tileContent.CreateNotification(), 
        DateTime.Now.AddSeconds(10))
    { 
           ExpirationTime=DateTimeOffset.UtcNow.AddSeconds(20)
    });

这将导致在您启动应用程序后的10秒内弹出通知。然后它将在另外10秒后过期。

(此外,也许你应该研究一下后台服务,因为这种特定的解决方案可能不是你想要的最佳选择...)


谢谢Tenshiko。我会尝试你的解决方案。祝您有美好的一天。 - Anup Vasudeva

0

不要使用 Dispatcher Timer,因为它会使应用变慢。你可以在页面初始化器中使用以下代码:

TileUpdateManager.CreateTileUpdaterForApplication().EnableNotificationQueue(true);

EnableNotificationQueue无法为我提供定期更新...通知不会重复出现... - Anup Vasudeva

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接