使用Telerik的登陆模板实现DoubanFm的登陆(WP7)
Telerik的控件很强大。我们直接使用其登陆模板。
在装过Telerik WP版后,就可以在VS里非常方便的添加页面了。
我们选择 Sign In Form
其XAML不是很长,直接贴出来
1 <telerikInput:RadDataForm Grid.Row="1" Margin="12,48,12,0" x:Name="DataForm"> 2 <telerikInput:RadDataForm.CurrentItem> 3 <models:SignInDataModel/> 4 </telerikInput:RadDataForm.CurrentItem> 5 <Grid> 6 <telerikInput:DataField Header="" TargetProperty="UserName"> 7 <telerikInput:DataField.EditorStyles> 8 <Style TargetType="telerikPrimitives:RadTextBox"> 9 <Setter Property="Watermark" Value="username or email"/> 10 </Style> 11 </telerikInput:DataField.EditorStyles> 12 <telerikInput:DataField.Validators> 13 <telerikInput:NonEmptyStringValidator/> 14 </telerikInput:DataField.Validators> 15 </telerikInput:DataField> 16 <telerikInput:DataField Header="" TargetProperty="Password" telerikDataForm:PasswordField.IsPasswordField="True"> 17 <telerikInput:DataField.EditorStyles> 18 <Style TargetType="telerikPrimitives:RadPasswordBox"> 19 <Setter Property="Watermark" Value="password"/> 20 </Style> 21 </telerikInput:DataField.EditorStyles> 22 <telerikInput:DataField.Validators> 23 <telerikInput:NonEmptyStringValidator/> 24 </telerikInput:DataField.Validators> 25 </telerikInput:DataField> 26 </Grid> 27 </telerikInput:RadDataForm>
XAML非常简单简洁,一看就懂,要想加验证也非常容易。
下面的登陆按钮直接将DataForm传至后台
1 <Button Grid.Row="2" Content="sign in" Margin="12" CommandParameter="{Binding ElementName=DataForm}" 2 Command="{StaticResource DataFormCommitCommand}" />
下面用这个控件来做我们的DoubanFm的登陆。
还是使用MVVMlight,为登陆页面建立一个VM,别忘了在Locator中注册VM。
在VM中暴露一个UserModel属性给View
1 public const string UserModelPropertyName = "UserModel"; 2 private User usermodel = new User(); 3 public User UserModel 4 { 5 get 6 { 7 return usermodel; 8 } 9 10 set 11 { 12 if (usermodel == value) 13 { 14 return; 15 } 16 17 RaisePropertyChanging(UserModelPropertyName); 18 usermodel = value; 19 RaisePropertyChanged(UserModelPropertyName); 20 } 21 }
再为登陆按钮设置一个Command,如下:
1 private RelayCommand<RadDataForm> logincommand; 2 /// <summary> 3 /// Gets the LoginCommand. 4 /// </summary> 5 public RelayCommand<RadDataForm> LoginCommand 6 { 7 get 8 { 9 return logincommand 10 ?? (logincommand = new RelayCommand<RadDataForm>( 11 (dataform) => 12 { 13 dataform.Commit();//这样值就到UserModel了 14 User user=dataform.CurrentItem as User; 15 Debug.WriteLine(user.Username); 16 Debug.WriteLine(user.PassWord); 17 18 })); 19 } 20 }
再结合上一篇Rx,我们可以实现DoubanFm的登陆了。
实现起来为了不破坏原先代码的结构,我们把负责Post的Rx利用SimpleIoc注入到早就写好的HttpRequestService类中。
1 MyRxPostMethodService RxService; 2 public HttpRequestService(MyRxPostMethodService rx) 3 { 4 RxService = rx; 5 6 }
MyRxPostMethodService 就是上篇的HTTPREQUEST类
再对Post包装一下
1 public IObservable<string> Post(string URL, string PostData) 2 { 3 return RxService.PostMethod(URL, PostData); 4 5 }
最后再把HttpRequestService注入到LoginVm中
1 private IHttpRequest _httprequest; 2 public LoginViewModel(IHttpRequest http) 3 { 4 _httprequest = http; 5 }
再将Command改为
1 public RelayCommand<RadDataForm> LoginCommand 2 { 3 get 4 { 5 return logincommand 6 ?? (logincommand = new RelayCommand<RadDataForm>( 7 (dataform) => 8 { 9 dataform.Commit();//这样值就到UserModel了 10 User user=dataform.CurrentItem as User; 11 string username = user.Username; 12 string password = user.PassWord; 13 _httprequest.Post("http://www.douban.com/j/app/login", "app_name=radio_desktop_win&version=100&email=" + username + "&password=" + password).Subscribe(this.OnLoginStatusChanged); 14 15 16 })); 17 } 18 }
到这里基本大功告成。
转载于:https://www.cnblogs.com/07lyt/p/3975016.html
使用Telerik的登陆模板实现DoubanFm的登陆(WP7)相关推荐
- php cms 的模板修改,phpcms v9后台登陆模板修改方法和程序版本更新提示修改方法...
Phpcms V9后台登陆及版本更新提示的自定义修改 一.Phpcms V9后台登陆模板修改方法 1. 找到登陆模板文件phpcms/modules/admin/emplates/login.tpl: ...
- 分享一组漂亮的html5后台登陆模板
在开发后台登陆系统时经常会用到登陆界面,这期分享一下亲自编写的四套html5后台登陆模板 如图: 案例一: 案例二: 案例三: 案例四:背景带有波浪动画 后台登陆模板源码链接
- 帝国 loginjs.php,帝国cms JS调用登陆模板制作教程
帝国JS调用登陆模板为控制JS式调用会员状态的页面格式(/e/member/login/loginjs.php) .本文将从JS调用登陆状态模板制作格式,JS调用登陆状态模板支持变量说明,如何修修改J ...
- ubuntu登陆后一闪回到登陆界面
ubuntu登陆后一闪回到登陆界面 最后发现居然是我的环境变量配置问题........ 解决方法: 先CTRL+ALT+F1 root进去, 查看nickleo用户为什么登录失败 cat /hom ...
- php同个用户同时只能登陆一个, 后登陆者踢掉前登陆者
php同个用户同时只能登陆一个, 后登陆者踢掉前登陆者php同个用户同时只能登陆一个, 后登陆者踢掉前登陆者 通常用户登陆,如果没有特别的限定, 同一个用户可以同时登陆, 今天搞了一个东西限定一个用户 ...
- java 实现异地登陆_Java实现用户异地登陆踢人操作
使用框架:Shiro+SpringBoot 首先,我先说步骤: 1.登陆 2.查看该用户是否已经登陆 是:3 否:正常登陆 3.将已登陆用户踢出,自己登陆. 这只是说原理,具体实现现在说. 踢出已 ...
- 登陆页面+匹配数据库+提示登陆成功或失败
文章目录 摘要 登陆页面制作 源码 效果展示 数据库查询 源码 数据库配置 效果展示 网页尾页 源码 效果展示 思考: 摘要 制作一个登陆页面,用户提交登陆信息后,查询后台数据库,进行数据匹配,匹配成 ...
- 计算机为什么会出现网络用户,电脑登陆QQ经常提示异地登陆是怎么回事?
现在全国使用移动宽带的用户很多,相信长时间使用移动宽带的用户发现了这么一个规律,那就是你使用网络的环境没变,但是IP地址却全国跑.有时候连QQ都会被认为是异常登陆,那么这是什么原因呢?下面一起来看看关 ...
- html手机qq登陆验证码,为什么qq登陆需要验证码?qq登陆需要验证码怎么取消?...
为什么qq登陆需要验证码?qq登陆需要验证码怎么取消?很多用户在登陆qq时,总是需要输入验证码,一些用户表示很烦,那么大家知道为什么qq登陆需要验证码吗?如果不想每次登陆qq都需要验证码该如何取消呢? ...
最新文章
- POJ 2955 Brackets(括号匹配一)
- 软件开发工程师证书有用吗_bim工程师证书有用吗
- Python 真的勒死 R 了吗?
- 自学python单片机编程-Python玩转单片机:从基础到进阶,几款主流的开发板大盘点!...
- linux pv命令,pv命令 – 管道查看器
- c语言可以发现注释错误,编译时可以发现注释中的错误_c语言中不允许使用
- 百度翻译API 错误码: 52003,错误信息: UNAUTHORIZED USER
- matlab风玫瑰图,基于Matlab的风玫瑰图绘制
- PS 快捷键大全(psshortcut)
- Error: EBUSY: resource busy or locked, lstat ‘D:\pagefile.sys‘
- 阿里云代码管理平台 Teambition Codeup(行云)亮相,为企业代码安全护航
- yarn : 无法加载文件 C:\Users\Emily\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本。
- STAR法则修改简历
- Linux上如何测试服务器之间的通信
- Latex系列教程 汇总
- 巴黎出差及场测攻略V1.3
- 业绩暴涨7倍股价却“不动弹”,TCL科技被资本看透了?
- SOMIC E95振动设置
- 三阶实对称矩阵含重根的快速还原秒杀法
- _motz_ forum.php_开启模块化大门 moto z体验
热门文章
- 台州银行笔试考什么_【精选】台州银行历年真题笔试题面试题大全.pdf
- PCIe数据卡设计资料第611篇:基于VU9P的双路5Gsps AD 双路6Gsps DA PCIe数据卡
- python人文社科研究_人文社科论文写作数据分析利器|SPSS+Stata+Endnote+Python
- AX200网卡支持linux,Intel 9260/AX200网卡在Deepin/UOS/Ubuntu下网速慢的处理
- S@Kura的PHP进阶之路(四)
- 老字号“张小泉”上线小程序与酷客多达成战略合作!
- 关于字符、字符集、编码和Unicode
- 红黑树-Java实现
- 惠普HP LaserJet Pro M405d 打印机驱动
- 网络诊断请将以太网电缆插入计算机咋回事,总是提示网络电缆被拔出是怎么回事?...