2013-01-24 73 views
0

我想安排几个消息更新瓷砖上,但第二个方法tileTextAttributes[0].InnerText = Message;第四行不断抛出异常说不正确的参数。你能帮我解决问题吗?winrt瓷砖更新错误C#

private void SetupTiles() 
{ 
    try 
    { 
     DateTimeOffset time = DateTime.Now; 

     for (int i = 0; i < messages.Count; i++) 
     { 
      Windows.UI.Notifications.ScheduledTileNotification stf = new ScheduledTileNotification(GetTile(messages[i]), time); 
      time.Add(new TimeSpan(0, 0, 0, 30, 0)); 
      TileUpdateManager.CreateTileUpdaterForApplication().AddToSchedule(stf); 
     } 
    } 
    catch (Exception ex) 
    { 
     new Windows.UI.Popups.MessageDialog(ex.Message).ShowAsync(); 
    } 
} 

XmlDocument GetTile(string Message) 
{ 
    XmlDocument tileXml = TileUpdateManager.GetTemplateContent(TileTemplateType.TileWideText05); 
    string t = tileXml.ToString(); 

    XmlNodeList tileTextAttributes = tileXml.GetElementsByTagName("text"); 
    tileTextAttributes[0].InnerText = Message; 

    XmlDocument squareTileXml = TileUpdateManager.GetTemplateContent(TileTemplateType.TileSquareText04); 

    XmlNodeList squareTileTextAttributes = squareTileXml.GetElementsByTagName("text"); 
    squareTileTextAttributes[0].AppendChild(squareTileXml.CreateTextNode(Message)); 

    IXmlNode node = tileXml.ImportNode(squareTileXml.GetElementsByTagName("binding").Item(0), true); 
    tileXml.GetElementsByTagName("visual").Item(0).AppendChild(node); 

    return tileXml; 
} 

编辑

System.ArgumentException:参数不正确。


Windows.UI.Notifications.ScheduledTileNotification..ctor(XmlDocument的 内容,的DateTimeOffset交货期)
在在C
TestProj.MainPage.SetupTiles():\ Users \用户使用频度\文档\ Visual Studio中 2012 \ Projects \ TestProj \ TestProj \ MainPage.xaml.cs:line 398

+0

请发布确切的错误信息! – nemesv

+0

@nemesv我已编辑帖子。 – Yohannes

+0

而不是'ex.Message'用'Windows.UI.Popups.MessageDialog(ex.ToString())。ShowAsync()'记录整个异常并发布。 – nemesv

回答

0

XML对我来说看起来很好,但是您正在安排刚才通过的通知。在构造函数之前添加时间偏移量。

编辑 看起来它比这更微妙一些,我想也许是因为各种时间函数如何对UTC进行工作。例如,

DateTimeOffset time = DateTime.Now.AddMinutes(3); 

是好的,但不是:

DateTimeOffset time = DateTime.Now; 
time = time.Add(new TimeSpan(0, 0, 3, 0, 0)); 

我在blog post on Scheduled Notifications一些信息可能会有所帮助。