Windows Phone 7(WP7)开发 在ViewModel中使用NavigationService
来源:互联网 发布:java调用别人的接口 编辑:程序博客网 时间:2024/05/21 22:55
在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/archive/2011/12/30/Windows_Phone_WP7_Develop_MVVM_ViewModel_NavigationService.html
- Windows Phone 7(WP7)开发 在ViewModel中使用NavigationService
- Windows Phone 7(WP7)开发 在ViewModel中使用NavigationService
- 在ViewModel中使用NavigationService在ViewModel中使用NavigationService
- [windows phone 7开发]搭建WP7开发环境
- 入门WP7 - 1.搭建Windows Phone 7开发环境
- Windows Phone 7(WP7)开发 获取设备信息
- Windows Phone 7(WP7)开发 获取网络状态
- Windows Phone 7(WP7)开发 获取设备信息
- Windows Phone 7(WP7)开发 读取本地资源文件
- WP7前途无限:Windows Phone开发
- Windows Phone开发之独立存储、文件的读写、ListBox绑定数据、NavigationService实现XAML跳转
- WP7-Windows Phone 7 培训总结
- Window Phone 7开发环境的配置(在Microsoft Vistual Studio 2010中 )安装与WP7编程
- Window Phone 7开发环境的配置(在Microsoft Vistual Studio 2010中 )安装与WP7编程
- 在win2008 r2中安装windows phone 7开发工具
- WP7开发系列——Windows Phone 7 开发环境搭建
- Windows Phone 7 3D开发中使用纹理贴图
- 在Windows Phone 7当中撰写导航程式WP7 SDK 7.1 (Mango)
- SQL Server 2012新特性_列存储索引(3)
- android 使用Dalvik的setTargetHeapUtilization 增强程序堆内存的处理效率
- Struts2 result type(结果类型)
- 通用:键盘上的标准键码值
- 实例讲解5--其他命令d
- Windows Phone 7(WP7)开发 在ViewModel中使用NavigationService
- 仿豆丁flashpaper 网页flash文档播放调用文档资料收集
- tab 选择框
- 存一个 sliding 半开布局代码
- 为网页创建快捷方式
- 实例讲解5--其他命令e
- java中volatile关键字的含义
- Windows 上使用 Github 手记
- 内核里面writel是如何实现的