Windows Phone 7(WP7)開發 在ViewModel中使用NavigationService

來源:互聯網
上載者:User

  在WP7 APP的開發中,頁面之間的跳轉是一個再常見不過的操作啦,在Xaml中能實現,在Xaml背後的cs檔案中用NavigationService能實現,但是在使用MVVM開發模型之後,在ViewModel中就不如前面的實現起來直觀了。

  其實在ViewModel中實現頁面的跳轉也很簡單,下面的代碼:

using Microsoft.Phone.Controls;var root = App.Current.RootVisual as PhoneApplicationFrame;root.Navigate(new Uri("/NextPage.xaml", UriKind.Relative));

  一般的任務情況下,這幾行代碼已經能夠完成啦,但是有一個問題,讓我們再細緻探討一下:做一個使用者登入的功能,按照正常的商務程序,使用者在某頁面輸入完使用者名稱和密碼之後,程式串連伺服器端驗證使用者的合法性(此過程需要網路連接,過程可能需要耗費時間較長,並且是非同步作業),當伺服器返回資料之後,程式判斷如果是合法使用者則跳轉到使用者個人資訊介面,否則給出錯誤提示。

  在VIEWMODEL處理伺服器返回資料之後選擇行為的代碼應該是這樣的:

if (result.IsSuccess == true)            {                var root = App.Current.RootVisual as PhoneApplicationFrame;                root.Navigate(new Uri("/UserInfo.xaml", UriKind.Relative));            }            else            {               //顯示出錯資訊。            }

  但正如剛才所說的,由於要串連伺服器,此過程需要網路連接,如果遇到網路訊號不好,可能使用者在點擊“登入”按鈕之後,等了10秒都沒有得到任何成功或者失敗的提示(使用者體驗好一點的可能會顯示一個“登入中”),使用者等的不耐煩了按了後退鍵或者其他動作,進入了別的頁面,突然,伺服器的反饋資料回來之後,上面的ViewModel代碼將使用者強行帶入了個人資訊頁面,So,使用者很生氣,後果很嚴重。

加一個判斷就好了:

if (result.IsSuccess == true)            {                var root = App.Current.RootVisual as PhoneApplicationFrame;                if (root.CurrentSource == new Uri("Login.xaml", UriKind.Relative))                    root.Navigate(new Uri("UserInfo.xaml", UriKind.Relative));            }            else            {                //顯示出錯資訊            }

 

 

(另外發現部落格園的文字被其他網站採集嚴重,而且好多網站連個出處都不寫,轉載請註明出處~  http://www.cnblogs.com/vistach)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.