[MVVM]02-MVVMLight页面前后台消息和命令传递
来源:互联网 发布:淘宝分店怎么开 编辑:程序博客网 时间:2024/06/05 03:18
MVVMLight页面前后台消息和命令传递
场景
- 一个文本框一个按钮点击按钮把文本框的内容弹出来
操作
- 建立View和ViewMode之间的关系
- 就是指定窗口xaml的Datacontext也就是窗口上下文为ViewMode类
可以直接通过绑定来实现
- 就是指定窗口xaml的Datacontext也就是窗口上下文为ViewMode类
<Application.Resources> <ResourceDictionary> <vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" xmlns:vm="clr-namespace:MyMvvmLight.ViewModel" /> </ResourceDictionary> </Application.Resources> //这个构造器通过nuget是自动安装的但是在uwp不会自动安装,通过lib安装也不会生成 DataContext="{Binding Main, Source={StaticResource Locator}}"
- 可以通过构造函数
public MainView() { this.DataContext = new MainViewModel();// find correct wife }
- 也可以通过xaml文件来实现两者之间的关联
<Window.DataContent> <vm:ViewModel /></Window.DataContent>
- UI的部分就在xaml文件和xaml文件的cs文件中
<TextBox Width="100" Text="{Binding Txt,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}" Margin="246,41,171,65" Background="LightBlue" /> <Button Width="100" Height="30" Command="{Binding ShowTxtCommand}" Content="ShowTxtCommand" Margin="0,100,0,0"></Button>
- viewMode可以专心写逻辑,这个需求不用model层,后面的例子会讲到
//初始化命令 ShowTxtCommand = new RelayCommand(ShowMsg, CanShowMsgExecute); private string _txt; /// <summary> /// 绑定到界面的Txt /// </summary> public string Txt { get { return _txt; } set { _txt = value; RaisePropertyChanged(() => Txt); } } /// <summary> /// 命令具体实现 /// </summary> private void ShowMsg() { MessageBox.Show(Txt); } /// <summary> /// 显示消息命令是否可以执行 /// </summary> /// <returns></returns> private bool CanShowMsgExecute() { return !string.IsNullOrEmpty(Txt); }
提示
- RelayCommand是对wpf命令的包装,实现了命令的一些基本操作
- 本文的第一个参数就是消息令牌,第二个参数就是按钮(命令的发出者能不能发命令)这里我们可以看到如果文本框没有内容那按钮是不可以用的,所有的操作都在绑定和命令实现过了。有多重载参考官文
- mvvmlight命令模式如果发现有问题,是这框架有点问题,已修复过了引用
using GalaSoft.MvvmLight.CommandWpf;而不是用//using GalaSoft.MvvmLight.Command;
wup一定要用//using GalaSoft.MvvmLight.Command; - 一定不要用Click事件,来实现上面相关的功能,你想想你要初始化的时候检查文本框的内容,还要建立两个控件的直接引用关系,而且还要在文本框更改事件下修改按钮的状态。还要进行一系列的检测。
- 当然不用命令也可以实现功能,但是命令模式是不优势的,用了wpf的先进的技术却不接受这新新的开发思想,用老的东西思路开发,会让功能和效率有点折扣。也影响开发效率。
源码
技术开发一定要配套,为何有很多语言有很多不好的设计却不修复,就因为有很多人用那样不正规的开发手段来开发东西,走在规则的边缘来进行开发。语言一定要用正确的方式打开。潘多拉的盒子大家懂的。
阅读全文
0 0
- [MVVM]02-MVVMLight页面前后台消息和命令传递
- [MVVM]03-MVVMLight页面间传递消息
- 前后台传递参数
- 前后台,页面间传递多个参数
- 页面之间传递值,mvc参数问题(前后台)
- JSP页面数据的前后台简单传递
- MVVM:MVVM、MVVMLight、MVVMLight Toolkit之我见
- 0019-前后台数据传递
- json的前后台传递
- jsp 前后台值传递
- Django前后台数据传递
- [MVVM]01-MVVMLight安装
- jsp登陆页面和前后台验证并连接数据库
- Jsp登陆页面和前后台验证并连接数据库
- linux任务前后台切换命令(bg和fg)
- linux的任务前后台管理(bg和fg命令)
- MVVM、MVVMLight、MVVMLight Toolkit之我见
- MVVM、MVVMLight、MVVMLight Toolkit之我见
- 子线程中调用UpdateData(TRUE/FALSE)出现异常解决方法
- 浏览器工作原理(初步接触)
- 代码大全第二部分 (包含第四章)
- 欢迎使用CSDN-markdown编辑器
- printf函数的实现
- [MVVM]02-MVVMLight页面前后台消息和命令传递
- solve the version conflict of google test on ubuntu
- 893CRumor
- InnoDB的行锁
- spring boot No Identifier specified for entity的解决办法
- 【百度、腾讯、阿里等】+【JAVA开发实习生】+春招面试经验
- C与指针 7-9章
- Java将字符串转换为时间,支持多种格式
- Android网络框架