iT邦幫忙

DAY 24
2

Windows Phone 程式開發系列 第 21

[WP 開發] 宜蘭縣政府資料開放平台 App 開發 (3) 資料載入畫面

之前有寫過一篇文章資料載入時要有載入中畫面
http://www.dotblogs.com.tw/chou/archive/2013/10/07/123394.aspx
但學生在加入這段邏輯的過程中並不是很順利,主要是應用程式下載資料是採用非同步的作法,使用單執行緒的想法思考程式邏輯會有些問題。本文透過持續修改宜蘭縣政府資料開放平台應用程式,將這段邏輯加入其中。

本文刊載於
http://www.dotblogs.com.tw/chou/archive/2013/11/04/126581.aspx

在這篇文章您可以學到:
資料載入時要有載入中畫面

錯誤的寫法

先下載先前文章最後的範例。
http://files.dotblogs.com.tw/chou/1311/2013114102041211.zip

以設計模式開啟 MainPage.xaml,將 SystemTray.IsVisible 設為 True,並且加入 ProgressIndicator。

切換到程式碼,加入以下程式碼,在 App.ViewModel.LoadData() 資料載入事件前面顯示載入中畫面,後面隱藏載入中畫面。

實際執行程式時,你不會看到載入中畫面,這主要是 App.ViewModel.LoadData() 事件中採用非同步下載的方式,透過中斷點以及影片觀察流程,可能會對學生比較容易了解。

http://www.youtube.com/watch?v=1OoMxzEVZ40

如果將隱藏載入中畫面的代碼註解掉。

你就會看到載入中的效果,但這不符合需求。

可行的做法

可以正確做到資料載入時有載入中畫面的方法有很多,以下是其中一種寫法,新增屬性 IsSystemTrayShow(是否顯示 SystemTray)綁定到 SystemTray 和 ProgressIndicator 的顯示或隱藏屬性,當 IsSystemTrayShow 異動時,將會反應到載入中畫面做顯示或隱藏。

接著就進行實作,重新下載先前文章最後的範例。
http://files.dotblogs.com.tw/chou/1311/2013114102041211.zip

開啟 MainViewModel.cs,新增屬性 IsSystemTrayShow(是否顯示 SystemTray)並且設定初始值。

在 LoadData() 資料剛載入時,設定 IsSystemTrayShow 為 true 表示顯示載入中畫面。

在 GetHttpDocumentCallback 資料載入完成時,設定 IsSystemTrayShow 為 false 表示隱藏載入中畫面。

將屬性 IsSystemTrayShow(是否顯示 SystemTray)綁定到 SystemTray 和 ProgressIndicator 的顯示或隱藏屬性。

以設計模式開啟 MainPage.xaml,將 SystemTray.IsVisible 設為 True。

執行程式,可以看到資料載入時有載入中畫面。

https://www.youtube.com/watch?v=LVyiDwNRuuw

範例下載
http://files.dotblogs.com.tw/chou/1311/2013114135451196.zip


上一篇
[WP 開發] 宜蘭縣政府資料開放平台 App 開發 (2) Isolated Storage 應用
下一篇
[WP 開發] YouTube (1) 使用第三方 MyToolkit 播放 YouTube
系列文
Windows Phone 程式開發27

1 則留言

我要留言

立即登入留言