关键字: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()方法作为具体实现。

编译通过。

转载于:https://www.cnblogs.com/phoenixtrees/archive/2011/05/10/2041921.html

WPF新手实践7:MVVM Light Toolkit(七、Messenger)相关推荐

  1. Mvvm Light Toolkit 入门

    原文:Mvvm Light Toolkit 入门 前言 之前学习UWP的时候就一直看到有关MVVM的资料但是一直没有系统的去学,最近正好有时间,特地来攻破这个点,顺便学习一下VS与GitHub的链接和 ...

  2. Silverlight实用窍门系列:52.Silverlight中的MVVM框架极速入门(以MVVM Light Toolkit为例)...

    在本文将以MVVM Light Toolkit为例讲解MVVM框架在现实中的使用入门,首先我们在http://mvvmlight.codeplex.com/下载它的MVVM框架下来.也可以通过 htt ...

  3. MVVM Light Toolkit使用指南

    原文地址:  https://blog.csdn.net/ldld1717/article/details/77040077 概述 MVVM Light Toolkit是一个Android MVVM ...

  4. MVVM开发模式MVVM Light Toolkit中使用事件和参数传递

    Light中定义了类GalaSoft.MvvmLight.Command.RelayCommand 这个类继承了ICommand方法,实现了其中的方法,Action就是一个方法参数 // 摘要: // ...

  5. 【MVVM Light】新手初识MVVM,你一看就会

    [MVVM Light]新手初识MVVM,你一看就会 原文:[MVVM Light]新手初识MVVM,你一看就会 一.前言 作为一个初入软件业的新手,各种设计模式与框架对我是眼花缭乱的.所以当我接触到 ...

  6. WPF学习12:基于MVVM Light 制作图形编辑工具(3)

    本文是WPF学习11:基于MVVM Light 制作图形编辑工具(2)的后续 这一次的目标是完成 两个任务. 本节完成后的效果: 本文分为三个部分: 1.对之前代码不合理的地方重新设计. 2.图形可选 ...

  7. [译]WPF 应用程序和MVVM设计模式 ——Josh Smith

    这篇文章讨论: 模式与WPF MVP模式 为什么MVVM更加适用于WPF 用MVVM构建一个应用程序 译文地址:         http://www.cnblogs.com/lujiao_cs/ar ...

  8. silverlight 学习笔记 (五): MVVM Light Toolkits 之 RealCommand

    在MVVM模式中我们在设计ViewModel时需要定义大量的事件处理程序,这些事件处理程序可以通过在View中绑定进行触发,具体时间参考前面所讲.ViewModel中的需要将事件定义为公开的继承ICa ...

  9. 激光SLAM理论与实践-第五期 第七次作业

    1.章节: 1.激光SLAM理论与实践-第五期 第一次作业(矩阵坐标变换) 2.激光SLAM理论与实践-第五期 第二次作业(里程计标定) 3.激光SLAM理论与实践-第五期 第三次作业(去运动畸变) ...

最新文章

  1. Ubuntu16.04安装qt
  2. 写过Mybatis插件?那说说自定义插件是如何加载的吧?
  3. 项目管理 计算机仿真,分析计算机仿真技术在工程项目施工管理中的运用.pdf
  4. Oracle Database 11g Express Edition学习笔记
  5. nginx php-fpm 根目录,缓存 – Nginx和/或php5-fpm会记住符号链接的根目录
  6. 为什么计算机无法访问u盘,WIN10系统无法访问U盘怎么处理_win10电脑u盘无法访问拒绝访问如何解决-win7之家...
  7. Linux中常用的scree的安装和常用的screen命令
  8. 前端coursor设置为pointer在移动端点击会出现蓝色背景解决
  9. STA | 12. 时序签核方法学及实战经验
  10. JNB, JBE, JGE, JLE 指令的转移条件
  11. 由浪潮8控存储登顶SPC-1所想,存储系统一个长期被忽略的指标
  12. linux服务器怎么刻录光盘,Ubuntu 下使用K3B软件刻录光盘(图)
  13. DIY手动定制一个属于自己的软件安装管理器工具盘[二]
  14. TIKTOK海外直播公会如何申
  15. Dell电脑如何设置Fn键和其它功能键的组合
  16. 使用信锐无线控制器对接营运商portal服务器的原理分析与排错
  17. [渝粤教育] 昆明理工大学 单片机原理及接口技术(宋庆和) 参考 资料
  18. EXCEL中的POWER QUERY功能简介
  19. 杜克大学计算机科学博士,博士生毕业真有那么难?看看杜克大学的数据
  20. 图片无损放大,让细节美到毛孔——PhotoZoom Pro小能手来咯

热门文章

  1. MySQL 第二篇:增删改查
  2. 网络虚拟化是否需要额外的网络架构?
  3. Windows 2008 R2终端服务器安装配置 支持声卡
  4. 如何到达永生?揭示科学之美
  5. 屏蔽鼠标右键、Ctrl+N、Shift+F10、F11、F5刷新、退格键
  6. 保护模式下寻址(易懂)
  7. org 07c00h的原因
  8. DFS与BFS的总结
  9. 九度 题目1548:平面上的点
  10. golang中的strings.IndexRune