MVVM跨页面数据传输
一、MVVM是什么?
MVVM模式和MVC模式一样,主要目的是分离视图(View)和模型(Model),有几大优点
低耦合。视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的"View"上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。
可重用性。你可以把一些视图逻辑放在一个ViewModel里面,让很多view重用这段视图逻辑。
独立开发。开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计,使用Expression Blend可以很容易设计界面并生成xaml代码。
可测试。界面素来是比较难于测试的,测试可以针对ViewModel来写。
二、步骤
1.引入库
代码如下(示例):

2.实例窗口
代码如下(示例):

操作逻辑如下:在当前控件下,点击商品选择按钮,给商品选择按钮绑定打开相关窗口的命令,实例化商品选择窗口,DiningTable为委托,即在商品选择完成后点击确认关闭当前窗口时,通过使用委托进行控件页的数据刷新。
3.读入数据
代码如下(示例):

当商品选择页被控件页打开时,通过给窗口绑定加载事件,在窗口加载时从数据库中查询出所需的数据,关于如何把数据跨页面传输,一般有如下两种方式,第一,使用构造函数的参数方式传输,第二使用全局变量的方式。这两种方法都可以在别的页面拿到数据。
一般来说,跨页面数据传输(单条),可以像传字符、id之类的那样使用参数进行传输,但(多条数据或列表)会导致一个问题,从断点查询看,以传输参数的方式应该是可行的,但会两次刷新,导致传过去的数据给刷新没了。还有就是使用全局变量进行传输。本文以全局变量的方式。
这里就涉及跨页面传输数据,从子页面向主页面传输数据,子页面选中数据,提取特定数据在指定在id值。将id打包后向主页在特定控件中传输,这里使用的是mvvm的架构,所以传给该页绑定的ViewModel,再由数据绑定的方式来展示。

4.选择保存
代码如下(示例):

从页面中勾选特定项,(可选单条或多条)。,选取完有关的数据后,提取被选中的数据,由于使用的DataGrid,一般来说,可以使用DataGrid的SelectedItem=“{Binding SelectProEntity, Mode=TwoWay}” 通过双向绑定选中子项的属性提取到特定的某一条数据,然而我需要的是一条或多条的数据,固而通过循环DataGrid绑定的数据源,提取那些被选中的数据,并将其添加到全局属性列表中去。
5.回填数据
代码如下(示例):

控件ViewModel通过委托达成刷新效果。

MVVM跨页面数据传输相关推荐

  1. js 监听 安卓事件_百行代码实现js事件监听实现跨页面数据传输

    百行代码实现js事件监听实现跨页面数据传输 使用场景 类似消息队列的使用场景,支持同页面和跨页面通信,发送消息和接收消息 技术原理 跨页面通信: 基于事件监听,通过监听 storage事件监听回调机制 ...

  2. WPF跨页面传递数据

    WPF跨页面传递数据,如何在一个页面得到另个页面的数据,跨页面传递数据我觉得还是比较常用也比较重要的一个点,在传递数据的情况中无非就是A页面打开B页面把A页面的数据传递到B页面,或者就是A页面打开B页 ...

  3. [转]html5: postMessage解决跨域和跨页面通信的问题

    [转]html5: postMessage解决跨域和跨页面通信的问题 参考文章: (1)[转]html5: postMessage解决跨域和跨页面通信的问题 (2)https://www.cnblog ...

  4. angularJs 跨控制器与跨页面传值

    虽然网上概括了四种或更多的传值方式,但我现在用的顺手的就两种 首先要知道AngularJs可以构建一个单页面应用程序,所以我划分为跨控制器传值 和 跨页面传值 两类 1.跨控制器传值-- $rootS ...

  5. 【页面传值6种方式】- 【JSP 页面传值方法总结:4种】 - 【跨页面传值的几种简单方式3种】...

    页面传值--最佳答案6种方式: 一. 使用QueryString变量 QueryString是一种非常简单也是使用比较多的一种传值方式,但是它将传递的值显示在浏览器的地址栏中,如果是传递一个或多个安全 ...

  6. 面试官:前端跨页面通信,你知道哪些方法?

    引言 在浏览器中,我们可以同时打开多个Tab页,每个Tab页可以粗略理解为一个"独立"的运行环境,即使是全局对象也不会在多个Tab间共享.然而有些时候,我们希望能在这些" ...

  7. URL、Session、Cookies、Server.Transfer、Application和跨页面传送。

    URL.Session.Cookies.Server.Transfer.Application和跨页面传送. [分析] 本题考查面试者对ASP.NET中多页面传值的理解是否全面.因为ASP.NET的页 ...

  8. html5 多页面共享数据库,可以跨页面使用HTML5 Web SQL数据库吗?(Can HTML5 Web SQL databases be used across pages?)...

    可以跨页面使用HTML5 Web SQL数据库吗?(Can HTML5 Web SQL databases be used across pages?) 这可能是一个非常简单的问题,请原谅我的无知,但 ...

  9. 使用Cross-Page Postback(跨页面提交)在页面间传递数据

    页面间传递数据的几种方法 在页面间传递数据时,我们有以下几种选择: 1.Query String 一个很常见的方法,Query String是URL中问号之后的那一部分.其优点在于它是轻量级的,不会给 ...

最新文章

  1. '$.browser.msie' 为空或不是对象
  2. 第十八期:闲鱼上哪些商品抢手?Python分析后告诉你
  3. [SAP FI] Bank Master Vendor Master Creation Related Knowledge
  4. python节日贺卡图片大全_新年贺卡图片_新年贺卡手工制作图片
  5. 无重复字符串的最长子串
  6. win2003域迁移实战记录
  7. 线上python课程一般多少钱-python学习费用多少合适
  8. bzoj 相似回文串 3350 3103 弦图染色+manacher
  9. AI 脑补宋明清皇帝长相,四大模型构想真实五官
  10. MATLAB图像处理(均值滤波)
  11. Drozer的安装与使用 | Android逆向工具
  12. 企业微信--扫一扫功能(隐形坑)
  13. 【iOS-Cocos2d游戏开发之十六】添加本地通知(UILocalNotification)以及添加系统组件滚动视图(UIScrollView)!【2011年11月15日更新】
  14. 像把大象放入冰箱那样制造芯片
  15. 第39级台阶回溯算法c语言,五大经典算法之回溯法 - osc_9ipdey7e的个人空间 - OSCHINA - 中文开源技术交流社区...
  16. 什么叫贴片(电子元器件)
  17. HX=JE,HX-JE芯片,无感4.9V升压ic电路图PDF应用技术
  18. 最新微信hook二次开发C#Demo之获取消息代码
  19. Linux下视频转换工具:转换,切割,连接,
  20. 福州大学至诚学院计算机系,福州大学至诚学院计算机工程系

热门文章

  1. springboot整合redis分别实现手动缓存和注解缓存
  2. PYTHON批量挖掘百度下拉框关键词–转{张亚楠}
  3. Debian 中 BCM43142 蓝牙无法使用问题
  4. 微信小程序使用npm包的方法步骤
  5. 秋天,是时候继续播种了
  6. 关于deepin装机的一些经验总结
  7. Apache Pulsar指北
  8. u大师u盘装系统win7_U教授如何安装win7系统
  9. verilog中signed用法
  10. linux在文件中添加多行,关于linux:如何在文件中搜索多行模式?