0

當我收到任何郵件並獲得多個推送郵件時(在任何情況下),此方法總是顯示「1」。如何從拼貼通知中獲取號碼

private void Application_Activated(object sender, ActivatedEventArgs e) 
      { 
       List<ShellTile> pinnedtiles = ShellTile.ActiveTiles.ToList(); 
       MessageBox.Show(pinnedtiles.Count().ToString()); 

      } 

如何我已經測試此:我開始我的應用程序,比我進入的背景下,派出一些推送消息,新郵件的數量多於一個,比我啓動我的應用程序,並在消息框中我同樣的號碼 - 1(但在平鋪圖標我有更多的)

當我開始第一次我的申請,我收到任何推送消息之前,我有(1)

什麼,我做錯了相同的結果?

更新:

在這個崗位工作原理:

Distinct normal launch with push notification Windows Phone 7

更新: 沒有Count屬性:

MessageBox.Show(ShellTile.ActiveTiles.First().Count.ToString()); 

更新: 有沒有其他方法可以從Tile中計數?

+0

我不明白你的問題。你想知道瓷磚的總數量或有關特定瓷磚的東西嗎? – Alex 2012-03-26 10:11:34

+0

我想要瓦片的總數 – revolutionkpi 2012-03-26 10:13:37

+0

@revolutionkpi,因爲'IList '上的'Count'方法總是得到1的值。換句話說,您正在計算活動應用程序切片的數量,而不是活動切片左上方的「數字」(這是我假設您嘗試查找的數量)。 – ajmccall 2012-03-26 10:23:21

回答

2

ShellTile不允許您僅讀取值來更新它們(使用Update方法)。正如有人在上面的評論中提出的那樣,我會讓你的應用成爲數據的來源,而不是試圖從破壞者那裏讀取它。

我會做這樣的事情:

視圖模型 - 保存到獨立存儲應用程序退出/卸載/每當:

public int OutstandingNotification{ get; set;} 

BackgroundTask基於通知的更新動態磁貼:

tile.Update(new StandardTileData { Count = App.ViewModel.OutstandingNotification} 

應用程序加載 - 從隔離存儲加載ViewModel並顯示值:

MessageBox.Show(App.ViewModel.OutstandingNotification.ToString()); 
+0

我怎麼能:BackgroundTask更新基於通知的活動瓷磚? – revolutionkpi 2012-03-26 15:22:54

+0

我不知道後臺代理,因爲我還沒有做任何工作。我猜上面。問題是,您將數據存儲在除您控制的ShellTile之外的其他位置,並且可以根據需要進行查詢。 – gbanfill 2012-03-26 15:37:03

+0

有一篇很棒的文章,介紹了後臺代理以及如何使用它們來更新瓷磚/彼得托爾在這裏的烤麪包:http://blogs.msdn.com/b/ptorr/archive/2011/07/11/background-agents -Part-1-OF-3.aspx – Alex 2012-03-26 19:18:58