使用Telerik的登陆模板实现DoubanFm的登陆(WP7)
Telerik的控件很强大。我们直接使用其登陆模板。
在装过Telerik WP版后,就可以在VS里非常方便的添加页面了。
我们选择 Sign In Form
其XAML不是很长,直接贴出来
<telerikInput:RadDataForm Grid.Row="1" Margin="12,48,12,0" x:Name="DataForm">
<telerikInput:RadDataForm.CurrentItem>
<models:SignInDataModel/>
</telerikInput:RadDataForm.CurrentItem>
<Grid>
<telerikInput:DataField Header="" TargetProperty="UserName">
<telerikInput:DataField.EditorStyles>
<Style TargetType="telerikPrimitives:RadTextBox">
<Setter Property="Watermark" Value="username or email"/>
</Style>
</telerikInput:DataField.EditorStyles>
<telerikInput:DataField.Validators>
<telerikInput:NonEmptyStringValidator/>
</telerikInput:DataField.Validators>
</telerikInput:DataField>
<telerikInput:DataField Header="" TargetProperty="Password" telerikDataForm:PasswordField.IsPasswordField="True">
<telerikInput:DataField.EditorStyles>
<Style TargetType="telerikPrimitives:RadPasswordBox">
<Setter Property="Watermark" Value="password"/>
</Style>
</telerikInput:DataField.EditorStyles>
<telerikInput:DataField.Validators>
<telerikInput:NonEmptyStringValidator/>
</telerikInput:DataField.Validators>
</telerikInput:DataField>
</Grid>
27 </telerikInput:RadDataForm>
XAML非常简单简洁,一看就懂,要想加验证也非常容易。
下面的登陆按钮直接将DataForm传至后台
<Button Grid.Row="2" Content="sign in" Margin="12" CommandParameter="{Binding ElementName=DataForm}"
Command="{StaticResource DataFormCommitCommand}" />
下面用这个控件来做我们的DoubanFm的登陆。
还是使用MVVMlight,为登陆页面建立一个VM,别忘了在Locator中注册VM。
在VM中暴露一个UserModel属性给View
public const string UserModelPropertyName = "UserModel";
private User usermodel = new User();
public User UserModel
{
get
{
return usermodel;
} set
{
if (usermodel == value)
{
return;
} RaisePropertyChanging(UserModelPropertyName);
usermodel = value;
RaisePropertyChanged(UserModelPropertyName);
}
}
再为登陆按钮设置一个Command,如下:
private RelayCommand<RadDataForm> logincommand;
/// <summary>
/// Gets the LoginCommand.
/// </summary>
public RelayCommand<RadDataForm> LoginCommand
{
get
{
return logincommand
?? (logincommand = new RelayCommand<RadDataForm>(
(dataform) =>
{
dataform.Commit();//这样值就到UserModel了
User user=dataform.CurrentItem as User;
Debug.WriteLine(user.Username);
Debug.WriteLine(user.PassWord); }));
}
}

再结合上一篇Rx,我们可以实现DoubanFm的登陆了。
实现起来为了不破坏原先代码的结构,我们把负责Post的Rx利用SimpleIoc注入到早就写好的HttpRequestService类中。
MyRxPostMethodService RxService;
public HttpRequestService(MyRxPostMethodService rx)
{
RxService = rx; }
MyRxPostMethodService 就是上篇的HTTPREQUEST类
再对Post包装一下
public IObservable<string> Post(string URL, string PostData)
{
return RxService.PostMethod(URL, PostData); }
最后再把HttpRequestService注入到LoginVm中
private IHttpRequest _httprequest;
public LoginViewModel(IHttpRequest http)
{
_httprequest = http;
}
再将Command改为
public RelayCommand<RadDataForm> LoginCommand
{
get
{
return logincommand
?? (logincommand = new RelayCommand<RadDataForm>(
(dataform) =>
{
dataform.Commit();//这样值就到UserModel了
User user=dataform.CurrentItem as User;
string username = user.Username;
string password = user.PassWord;
_httprequest.Post("http://www.douban.com/j/app/login", "app_name=radio_desktop_win&version=100&email=" + username + "&password=" + password).Subscribe(this.OnLoginStatusChanged); }));
}
}
到这里基本大功告成。
使用Telerik的登陆模板实现DoubanFm的登陆(WP7)的更多相关文章
- 命令行登陆Oracle(包括远程登陆)
本方法适用于在cmd命令行窗口以及pl/sql登陆Oracle下登录本机或者远程Oracle. 1.首先保证在当前主机上设置了ORACLE_HOME环境变量: 例如:ORACLE_HOME=D ...
- ubuntu登陆后一闪回到登陆界面
ubuntu登陆后一闪回到登陆界面 最后发现居然是我的环境变量配置问题........ 解决方法: 先CTRL+ALT+F1 root进去, 查看nickleo用户为什么登录失败 ca ...
- php同一个用户同时只能登陆一个, 后登陆者踢掉前登陆者(排他登陆)
通常用户登陆,如果没有特别的限定, 同一个用户可以同时登陆, 今天搞了一个东西限定一个用户不能同时登陆到一个系统上, 后登陆者会把前面登陆的踢出来.(有点像QQ,同个帐号不能在多个地方同时在线, 后面 ...
- ssh登陆强制使用密码验证登陆
Linux系统使用ssh进行登陆,可以采用密码登陆和秘钥登陆.采用密码登陆每次需要输入密码进行验证,验证通过则可登陆到环境. 秘钥登陆为在服务器的客户端生成相应的公钥和私钥,公钥用于加密,私钥用于解密 ...
- PHP 登陆失效之后,重新登陆,跳转到失效前界面
登陆失效之后,需要重新进行登陆,登陆之后,进入到默认首页,如果需要继续之前的进行操作,必须重新点击菜单进行跳转,体验不太好 登陆的时候,将之前的url,拼接到登陆界面的url上作为一个redirect ...
- 使用RX方式模拟DoubanFm的登陆
WP7下的Get Post都是异步的 关于RX http://www.cnblogs.com/yangecnu/archive/2012/11/03/Introducting_ReactiveExte ...
- SpringBoot静态资源访问+拦截器+Thymeleaf模板引擎实现简单登陆
在此记录一下这十几天的学习情况,卡在模板引擎这里已经是四天了. 对Springboot的配置有一个比较深刻的认识,在此和大家分享一下初学者入门Spring Boot的注意事项,如果是初学SpringB ...
- Spring py登陆模块(包含 记录登陆时间,记录ip,增加积分)
嘛基于最近的复习准备写个关于spring登陆模块的小程序 虽然小但是五脏俱全呐 话不多说让我来介绍一下今天的登陆程序. 这些是 基于Spring JDBC 的持久层实现 基于Spring 声明事物的业 ...
- 网站第三方登陆(一) QQ登陆
QQ 登陆是指,通过qq的用户名和密码,登录网站,不需要注册,网站的用户名和密码.如下图 一旦你授权了,就可以进入网站了,要实现这个效果 1.去qq互联平台(http://connect.qq.com ...
随机推荐
- 友盟分享各平台URL设置
首先,想要进项友盟分享,需要到各平台去申请ID和KEY 比如想进行微信分享,就到微信开发者平台去创建应用,拿到对应的id和appScreat,然后进行设置: 参考资料
- HDU 1875 畅通工程再续 (最小生成树)
畅通工程再续 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- 洛谷P1717 钓鱼
P1717 钓鱼 41通过 116提交 题目提供者该用户不存在 标签贪心 难度提高+/省选- 提交该题 讨论 题解 记录 最新讨论 暂时没有讨论 题目描述 话说发源于小朋友精心设计的游戏被电脑组的童鞋 ...
- js中关于数据类型的转换
* 一.转化为数字*/console.log(‘123123’*1.0); /* 二.从一个值中提取另一中类型的值,并完成转化工作 */console.log(parseInt(‘1233zxhag’ ...
- 十五、Android学习笔记_授权过程
1.需要申请App Key和App Secret.不同的开发平台有不同的接入方式,可以参考文档,然后将这两个值放进去. 2.通过OAuth类实现认证,它会自动跳转到认证界面,进行授权,成功之后需要处理 ...
- C# 匿名方法及Lambda表达式
1.匿名方法 定义:匿名方法不能直接在类中定义,而是在给委托变量赋值的时候,需要赋值一个方法,此时可以“现做现卖”,定义一个匿名方法传递给该委托. 举实例说明: 实例一:无参数,无返回值的一个匿名方法 ...
- xenserver 清理日志的方法
转载:http://vps.gl/vps/259.html XENSERVER服务器经过半年或者一年使用后,XenServer产生了很多日志文件.XenServer默认是4G系统空间,而这些日志文件会 ...
- powershell查看pc信息的常用命令
Ps:powershell功能十分强大,这里只是简单说明一些比较常用的 get-wmiobject(获取对象) 查看本机的BIOS信息 1. 使用命令:get-wmiobject Wi ...
- @@ROWCOUNT (Transact-SQL)
@@ROWCOUNT (Transact-SQL) 返回受上一语句影响的行数.如果行数大于 20 亿,请使用 ROWCOUNT_BIG. Transact-SQL 语法约定 语法 @@ROWCOUNT ...
- Shell指令
Shell指令 1.Shell原理图 2.Shell指令的基本语法 Shell指令 Shell –选项 参数 Shell –选项 Shell参数 3.常用的Shell指令 1)ls指令:显示文件信息 ...