WPF新手实践7:MVVM Light Toolkit(七、Messenger)

关键字:WPF .Net C# MVVM Light Toolkit 框架 Visual Studio 2010 VS2010 Expression Blend 4 入门 教程 新手 实践

七、Messenger

一个用户体验良好的登录界面应该能够记录最后一次登录的用户ID以避免无意义的重复输入。为了实现这个功能,我将继续对上一篇的登录页面进行加工。

1、在LoginViewModel.cs中,再添加一个RelayCommand类型的属性LoadedCommand作为响应View层页面载入完成事件的Command对象,并在构造函数中对其进行初始化(PageLoaded()方法里涉及的两个MoveInputFocusTo方法的具体实现稍后详述)。

2、在Blend 4中,从“资产”页签的列表中选择“行为”,将“EventToCommand”拖拽到[Page]上,把默认名称改为PageLoaded。

3、将PageLoaded的Command属性绑定到LoadedCommand(注意“属性”页签中“触发器”一栏的EventName要选择Loaded),如下两图所示。

4、假设作为Model的User类中有一个LoadLastLoginInfo()方法会在每次构造新的User对象时从配置文件中读取上一次成功登录的用户ID,那么作为View层的LoginPage就需要根据用户ID的输入框是否有值来决定输入焦点究竟是应该落在用户ID输入框还是密码输入框。可是不论哪种输入框,都没有一个可以用来绑定到ViewModel层的属性来标识该元素应当获得输入焦点。如果想这么做,必须要调用该元素的Focus()方法。问题出现了:我不想让ViewModel层知道是哪种界面元素需要获得输入焦点。为了避免View层和ViewModel层的耦合太紧,我需要用MVVM Light Toolkit的Messenger来解除它们之间的强引用。首先,创建一个新的类MoveLoginInputFocusMessage,其中包含一个string类型的属性InputFieldName。

5、在LoginViewModel.cs中,实现PageLoaded()方法里涉及的两个MoveInputFocusTo方法(消息发送者)。

6、在LoginPage.xaml.cs中,修改LoginPage的构造函数,注册消息接收者并提供MoveLoginInputFocus()方法作为具体实现。

编译通过。

作者:李凤桐;出处:http://www.cnblogs.com/phoenixtrees。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值