在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
{
//显示出错信息。
}
From: http://www.cnblogs.com/vistach/archive/2011/12/30/Windows_Phone_WP7_Develop_MVVM_View