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)相关推荐

  1. php cms 的模板修改,phpcms v9后台登陆模板修改方法和程序版本更新提示修改方法...

    Phpcms V9后台登陆及版本更新提示的自定义修改 一.Phpcms V9后台登陆模板修改方法 1. 找到登陆模板文件phpcms/modules/admin/emplates/login.tpl: ...

  2. 分享一组漂亮的html5后台登陆模板

    在开发后台登陆系统时经常会用到登陆界面,这期分享一下亲自编写的四套html5后台登陆模板 如图: 案例一: 案例二: 案例三: 案例四:背景带有波浪动画 后台登陆模板源码链接

  3. 帝国 loginjs.php,帝国cms JS调用登陆模板制作教程

    帝国JS调用登陆模板为控制JS式调用会员状态的页面格式(/e/member/login/loginjs.php) .本文将从JS调用登陆状态模板制作格式,JS调用登陆状态模板支持变量说明,如何修修改J ...

  4. ubuntu登陆后一闪回到登陆界面

    ubuntu登陆后一闪回到登陆界面 最后发现居然是我的环境变量配置问题........ 解决方法: 先CTRL+ALT+F1   root进去, 查看nickleo用户为什么登录失败 cat /hom ...

  5. php同个用户同时只能登陆一个, 后登陆者踢掉前登陆者

    php同个用户同时只能登陆一个, 后登陆者踢掉前登陆者php同个用户同时只能登陆一个, 后登陆者踢掉前登陆者 通常用户登陆,如果没有特别的限定, 同一个用户可以同时登陆, 今天搞了一个东西限定一个用户 ...

  6. java 实现异地登陆_Java实现用户异地登陆踢人操作

    使用框架:Shiro+SpringBoot 首先,我先说步骤: 1.登陆 2.查看该用户是否已经登陆 是:3   否:正常登陆 3.将已登陆用户踢出,自己登陆. 这只是说原理,具体实现现在说. 踢出已 ...

  7. 登陆页面+匹配数据库+提示登陆成功或失败

    文章目录 摘要 登陆页面制作 源码 效果展示 数据库查询 源码 数据库配置 效果展示 网页尾页 源码 效果展示 思考: 摘要 制作一个登陆页面,用户提交登陆信息后,查询后台数据库,进行数据匹配,匹配成 ...

  8. 计算机为什么会出现网络用户,电脑登陆QQ经常提示异地登陆是怎么回事?

    现在全国使用移动宽带的用户很多,相信长时间使用移动宽带的用户发现了这么一个规律,那就是你使用网络的环境没变,但是IP地址却全国跑.有时候连QQ都会被认为是异常登陆,那么这是什么原因呢?下面一起来看看关 ...

  9. html手机qq登陆验证码,为什么qq登陆需要验证码?qq登陆需要验证码怎么取消?...

    为什么qq登陆需要验证码?qq登陆需要验证码怎么取消?很多用户在登陆qq时,总是需要输入验证码,一些用户表示很烦,那么大家知道为什么qq登陆需要验证码吗?如果不想每次登陆qq都需要验证码该如何取消呢? ...

最新文章

  1. POJ 2955 Brackets(括号匹配一)
  2. 软件开发工程师证书有用吗_bim工程师证书有用吗
  3. Python 真的勒死 R 了吗?
  4. 自学python单片机编程-Python玩转单片机:从基础到进阶,几款主流的开发板大盘点!...
  5. linux pv命令,pv命令 – 管道查看器
  6. c语言可以发现注释错误,编译时可以发现注释中的错误_c语言中不允许使用
  7. 百度翻译API 错误码: 52003,错误信息: UNAUTHORIZED USER
  8. matlab风玫瑰图,基于Matlab的风玫瑰图绘制
  9. PS 快捷键大全(psshortcut)
  10. Error: EBUSY: resource busy or locked, lstat ‘D:\pagefile.sys‘
  11. 阿里云代码管理平台 Teambition Codeup(行云)亮相,为企业代码安全护航
  12. yarn : 无法加载文件 C:\Users\Emily\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本。
  13. STAR法则修改简历
  14. Linux上如何测试服务器之间的通信
  15. Latex系列教程 汇总
  16. 巴黎出差及场测攻略V1.3
  17. 业绩暴涨7倍股价却“不动弹”,TCL科技被资本看透了?
  18. SOMIC E95振动设置
  19. 三阶实对称矩阵含重根的快速还原秒杀法
  20. _motz_ forum.php_开启模块化大门 moto z体验

热门文章

  1. 台州银行笔试考什么_【精选】台州银行历年真题笔试题面试题大全.pdf
  2. PCIe数据卡设计资料第611篇:基于VU9P的双路5Gsps AD 双路6Gsps DA PCIe数据卡
  3. python人文社科研究_人文社科论文写作数据分析利器|SPSS+Stata+Endnote+Python
  4. AX200网卡支持linux,Intel 9260/AX200网卡在Deepin/UOS/Ubuntu下网速慢的处理
  5. S@Kura的PHP进阶之路(四)
  6. 老字号“张小泉”上线小程序与酷客多达成战略合作!
  7. 关于字符、字符集、编码和Unicode
  8. 红黑树-Java实现
  9. 惠普HP LaserJet Pro M405d 打印机驱动
  10. 网络诊断请将以太网电缆插入计算机咋回事,总是提示网络电缆被拔出是怎么回事?...