Silverlight 按钮绑定到Code Behind 事件

2024-01-17 08:08

本文主要是介绍Silverlight 按钮绑定到Code Behind 事件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在Silverlight开发中,我们一直强调MVVM模式的好处。但很多时候,MVVM模式无法解决或者说很难解决 从ViewModel 到 View 的事件传递。(Event to Command)

使用这个家伙的MVVM Light 可以实现,但是要经过很多的波折。对此很多人也有争议:牺牲那么多时间去保持一个清洁干净的XAML意义是否有那么大?

 

我的这个例子要实现的内容:

1. 在主窗体(MainPage)按下DataGrid中绑定的按纽;

2.按钮把DataGrid中的产品编号传递到一个子窗体,子窗体启动,并可以显示(修改)这个产品编号;

3.按下保存,子窗体关闭,并把修改过的产品编号传递回主窗体(MainPage)。

4.主窗体刷新

 

我们知道:1,2,3 步骤用MVVM 是很好实现的,把按钮的命令通过ICommand传递到ViewModel执行,在ViewModel打开子窗体,并修改数据,没有问题。但如何通知主窗体刷新?我这里提到的不仅仅是刷新这个问题,可能还有其他的动作,比如数据更新后,更换主窗体的一张图片或改变主窗体某个控件的尺寸等等。

所以第4个步骤用MVVM是比较困难的。

 

如果我们直接把按钮绑定到主窗体的Code Behind中,就很好解决这个问题了。

 

主窗体DataGrid的代码:

 

主窗体 Code Behind 代码:

 

 

直接通过绑定,在主窗体打开子窗体,通过委托事件,接收子窗体修改过的产品编号,控制权又回到了主窗体,

就可以做任何你想做的事情了,世界又一片清静了!

 

完成代码下载: http://www.dengfeng.org/soft/MVVM_PassCommand_dengfengsoft.zip

 

这篇关于Silverlight 按钮绑定到Code Behind 事件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/615385

相关文章

C#如何动态创建Label,及动态label事件

《C#如何动态创建Label,及动态label事件》:本文主要介绍C#如何动态创建Label,及动态label事件,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#如何动态创建Label,及动态label事件第一点:switch中的生成我们的label事件接着,

基于@RequestParam注解之Spring MVC参数绑定的利器

《基于@RequestParam注解之SpringMVC参数绑定的利器》:本文主要介绍基于@RequestParam注解之SpringMVC参数绑定的利器,具有很好的参考价值,希望对大家有所帮助... 目录@RequestParam注解:Spring MVC参数绑定的利器什么是@RequestParam?@

spring @EventListener 事件与监听的示例详解

《spring@EventListener事件与监听的示例详解》本文介绍了自定义Spring事件和监听器的方法,包括如何发布事件、监听事件以及如何处理异步事件,通过示例代码和日志,展示了事件的顺序... 目录1、自定义Application Event2、自定义监听3、测试4、源代码5、其他5.1 顺序执行

Vue中动态权限到按钮的完整实现方案详解

《Vue中动态权限到按钮的完整实现方案详解》这篇文章主要为大家详细介绍了Vue如何在现有方案的基础上加入对路由的增、删、改、查权限控制,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、数据库设计扩展1.1 修改路由表(routes)1.2 修改角色与路由权限表(role_routes)二、后端接口设计

VUE动态绑定class类的三种常用方式及适用场景详解

《VUE动态绑定class类的三种常用方式及适用场景详解》文章介绍了在实际开发中动态绑定class的三种常见情况及其解决方案,包括根据不同的返回值渲染不同的class样式、给模块添加基础样式以及根据设... 目录前言1.动态选择class样式(对象添加:情景一)2.动态添加一个class样式(字符串添加:情

Python中的异步:async 和 await以及操作中的事件循环、回调和异常

《Python中的异步:async和await以及操作中的事件循环、回调和异常》在现代编程中,异步操作在处理I/O密集型任务时,可以显著提高程序的性能和响应速度,Python提供了asyn... 目录引言什么是异步操作?python 中的异步编程基础async 和 await 关键字asyncio 模块理论

禁止平板,iPad长按弹出默认菜单事件

通过监控按下抬起时间差来禁止弹出事件,把以下代码写在要禁止的页面的页面加载事件里面即可     var date;document.addEventListener('touchstart', event => {date = new Date().getTime();});document.addEventListener('touchend', event => {if (new

SpringMVC入参绑定特别注意

1.直接在controller中定义一个变量,但是此种传输方式有一个限制就是参数名和请求中的参数名必须保持一致,否则失效。 @RequestMapping("test2")@ResponseBodypublic DBHackResponse<UserInfoVo> test2(String id , String name){UserInfoVo userInfoVo = new UserInf

Maven(插件配置和生命周期的绑定)

1.这篇文章很好,介绍的maven插件的。 2.maven的source插件为例,可以把源代码打成包。 Goals Overview就可以查看该插件下面所有的目标。 这里我们要使用的是source:jar-no-fork。 3.查看source插件的example,然后配置到riil-collect.xml中。  <build>   <plugins>    <pl

FreeRTOS内部机制学习03(事件组内部机制)

文章目录 事件组使用的场景事件组的核心以及Set事件API做的事情事件组的特殊之处事件组为什么不关闭中断xEventGroupSetBitsFromISR内部是怎么做的? 事件组使用的场景 学校组织秋游,组长在等待: 张三:我到了 李四:我到了 王五:我到了 组长说:好,大家都到齐了,出发! 秋游回来第二天就要提交一篇心得报告,组长在焦急等待:张三、李四、王五谁先写好就交谁的