[MVVM]03-MVVMLight页面间传递消息
来源:互联网 发布:淘宝店铺页头设计尺寸 编辑:程序博客网 时间:2024/06/05 07:04
MVVMLight页面间传递消息
场景
- 两个页面之间传递数据,我们这里演示一个文本框的内容点击发送在第二个页面上显示
操作
- 新建一个接收页面,并添加一个text用来显示接收的消息
<Grid> <TextBlock Text="{Binding Msg}"></TextBlock> </Grid>
- 添加窗口对应的ViewModel
public class Window1ViewModel : ViewModelBase { public Window1ViewModel() { Messenger.Default.Register<string>(this, MessageToken.SendMessageToken, (msg) => { Msg = msg; }); } private string _msg; public string Msg { get { return _msg; } set { _msg = value; RaisePropertyChanged(() => Msg); } } }
- 添加对应的消息类型参数
public static class MessageToken { /// <summary> /// 动画信息标志 /// </summary> public static readonly string AnimateMessageToken; /// <summary> /// 发送消息标志 /// </summary> public static readonly string SendMessageToken; static MessageToken() { AnimateMessageToken = nameof(AnimateMessageToken); SendMessageToken = nameof(SendMessageToken); } }
- 为窗口关联ViewModel
//在locator添加viewModel SimpleIoc.Default.Register<Window1ViewModel>(); public Window1ViewModel View1 { get { return ServiceLocator.Current.GetInstance<Window1ViewModel>(); } }
- 之后绑定两者之间的关系
DataContext="{Binding Source={StaticResource Locator},Path=View1}"
- 在主窗口上添加控件和命令
<TextBox Text="{Binding Msg}" Width="100" Height="30" Margin="86,10,331,120"></TextBox> <Button Width="100" Height="30" Grid.Row="1" Content="Send" Command="{Binding SendCommand}"></Button>
- 主窗口对应的操作
SendCommand = new RelayCommand(() => { Messenger.Default.Send<string>(Msg, MessageToken.SendMessageToken); });
提示
- 流程就是新建窗口,添加ViewModel ,关联View 和ViewMoel,添加添加对应的操作方法,不会可以参考上一文章
- 消息令牌是可以自己定义的,尽量有意思,UI和ViewModel沟通一下。
- 页面间如果有大量的数据传递,一定要用Model和DB,一个页面存在一个地方的数据,只要用页面间通知有消息到达并告诉去那里去取数。这种令牌其实是基于消息通讯的。
源码
经常遇到官方说这是一个独木桥,尽量不要过太多的人。但是有很多人却喜欢在这上面通过整个军队,你说你的软件不出问题还有天理吗?合理的设计和合理的使用。我还遇到过在动态库里要求添加线程的要求,封个库还要添加线程,那别人调的时候肯定要考虑线程,万一调用者不考虑就会说库出了问题,如果调用者不开线程,就会说你的库性能不高。大家教我如何出这个坑呢?
阅读全文
0 0
- [MVVM]03-MVVMLight页面间传递消息
- [MVVM]02-MVVMLight页面前后台消息和命令传递
- MVVM:MVVM、MVVMLight、MVVMLight Toolkit之我见
- [MVVM]01-MVVMLight安装
- MVVM、MVVMLight、MVVMLight Toolkit之我见
- MVVM、MVVMLight、MVVMLight Toolkit之我见
- MVVM、MVVMLight、MVVMLight Toolkit之我见
- MVVM、MVVMLight、MVVMLight Toolkit之我见
- Silverlight MVVM模式开发 -MVVMLight
- [MVVM]05-MvvmLight页面与Model层的交互含UI线程
- 使用 MVVMLight 消息通知
- iOS页面间传递消息之Delegate
- MvvmLight(四)消息通知Messenger
- 关于mvvm模式中消息传递的疑问
- MVVMLight
- MVVM模式结合MVVMlight框架的应用(20)
- 进程间传递消息
- MVVMLight源码分析之消息机制和ViewModelBase
- Python语言入门(三)简洁易用的数组与List
- 浏览历史记录通用代码
- springcloud中使用Hystrix保护应用
- Vue的移动端多图上传插件vue-easy-uploader
- 问题:Action中request域对象如何从Jsq中获取
- [MVVM]03-MVVMLight页面间传递消息
- 折半查找算法(开始序列有序)
- KMP算法
- 【从无到有】雄关漫道真如铁,而今迈步从头越
- 动态内存
- CodeForces
- 【SpringMVC】数据类型转换以及Spring编码过滤器
- 前端学习_06.Script语法基础
- 算法进阶3-5