2012-07-22 71 views
3

说,我想定期更新Windows 8活瓷砖,说10秒后。有什么办法可以实现吗?我使用的地铁XAML C#在Windows 8定期更新的Windows 8活瓷砖

下面是我对调度定时器的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()); 

在此先感谢。

+0

做u想在现场瓷砖更新什么??图片或文字? – Sajid 2012-07-22 10:43:07

+0

抱歉,我不清楚我的问题。我想更新图像。我有三张图片,我想在10秒后显示。现在我可以使用DispatcherTimer来做到这一点,但图像在瞬间发生了变化。他们没有得到动画,因为我看到其他默认瓷砖变得动画 – 2012-07-22 10:47:40

回答

0

不要使用分派器计时器,因为它会减慢您的应用程序。您可以使用下面的在你的页面初始化程序:

TileUpdateManager.CreateTileUpdaterForApplication().EnableNotificationQueue(true); 
+0

EnableNotificationQueue不会提供给我定期更新...通知不会重复... – 2012-07-22 16:44:18

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秒后过期。

(另外,也许你应该看看后台服务,因为这个特殊的解决方案可能不是最适合你想要的...)

+0

感谢Tenshiko。我会试试你的解决方案。美好的一天。 – 2012-08-06 04:44:06