一般我們在開發Windows Phone App,很常使用動態磚來呈現重要的資訊,並且使用背景服務來更因動態磚,誰叫他是"動態"磚,資料若是死的就沒意義了,所以我們會透過ScheduledAgent的背景任務來幫我們在背後幫忙更新動態磚,可是在ScheduledAgent怎麼就沒辦法使用ShellTile.ActiveTiles.First()的方法來檢查動態專了呢?
本篇文章將引導您解決解決再ScheduledAgent中無法使用【ShellTile.ActiveTiles.First()】檢查動態磚的問題。
一般我們在開發Windows Phone App,很常使用動態磚來呈現重要的資訊,並且使用背景服務來更因動態磚,誰叫他是"動態"磚,資料若是死的就沒意義了,所以我們會透過ScheduledAgent的背景任務來幫我們在背後幫忙更新動態磚,可是在ScheduledAgent怎麼就沒辦法使用ShellTile.ActiveTiles.First()的方法來檢查動態專了呢?
本篇文章將引導您解決解決再ScheduledAgent中無法使用【ShellTile.ActiveTiles.First()】檢查動態磚的問題。
一般來說我們Windows Phone 的專案中會使用以下方法來檢查動態磚並且更新
1: //判斷是否已經有被釘選到開始畫面了
2: ShellTile appTile = ShellTile.ActiveTiles.First();
3: if (appTile != null)
4: {
5: FlipTileData appTileData = new FlipTileData()
6: {
7: Title = "",
8: BackgroundImage = tile_image,
9: BackTitle = "",
10: BackBackgroundImage = new Uri("/Assets/Tiles/FlipCycleTileMedium.png", UriKind.RelativeOrAbsolute)
11: };
12: appTile.Update(appTileData);
13: }
可是若要在背景任務下更新動態磚,就必須在方案底下新增一個ScheduledAgent的專案,
在專案中ScheduledAgent的OnInvoke底下來更新動態磚,可是怎麼就無法使用ShellTile.ActiveTiles.First()了呢?
不用擔心 其實我們只要換一個寫法就可以囉,山不轉路轉!!
透過IEnumerator把第一項給抽取出來就可以囉!!
1: //判斷是否已經有被釘選到開始畫面了
2: IEnumerator<ShellTile> it = ShellTile.ActiveTiles.GetEnumerator();
3: it.MoveNext();
4: ShellTile appTile = it.Current;
5: if (appTile != null)
6: {
7: FlipTileData appTileData = new FlipTileData()
8: {
9: Title = "",
10: BackgroundImage = tile_image,
11: BackTitle = "",
12: BackBackgroundImage = new Uri("/Assets/Tiles/FlipCycleTileMedium.png", UriKind.RelativeOrAbsolute)
13: };
14: appTile.Update(appTileData);
15: }
如此一來我們在ScheduledAgent的背景任務下也可以檢查並更新動態磚了!!
相關議題:
C# Windows Phone 8 WP8,自定義FlipTile動態磚樣式,用Xaml創建動態磚樣式!
文章中的敘述如有觀念不正確錯誤的部分,歡迎告知指正 謝謝
轉載請註明出處,並且附上本篇文章網址 ! 感謝。