2013-01-24 74 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一些信息可能會有所幫助。