MVVM模式下为Command传递多个参数
来源:互联网 发布:淘宝双11抢购技巧 编辑:程序博客网 时间:2024/05/21 01:30
mvvm模式里command经常写在vm中。而command只能传入一个对象作为执行时的参数,若要传入多个参数,在.cs文件(即调用vm的command)中,只需要把多个参数加到一个集合里,传入command时就把集合当单参数对象传入就行了。
如:
- public ICommand CMD
- {
- get
- {
- return new DelegateCommand<object[]>(x =>
- {
- var obj0=x[0].ToString();
- var obj1=Convert.ToInt32(x[1]);
- //.................
- });
- }
- }
- //调用处:
- {
- .........
- v.CMD.Execute(new object[]{"1111",456});//v为该CMD所在的vm的实例
- }
但如果在xaml中用到如blend的InvokeCommandAction进行command的绑定,又如何在xaml中进行传入多参数??
方法有许多种。小弟不才,自己开发了2个类来解决这问题。先说明一下,此方法只使用与silverlight4或以上版本。
先看看应用:
- <Button Command="{Binding CMD}">
- <Button.CommandParameter>
- <sw:MultiDelegateObjects>
- <sw:DelegateObject Key="s1" Value="{Binding Tag, ElementName=t1}"/>
- <sw:DelegateObject Key="s2" Value="888"/>
- </sw:MultiDelegateObjects>
- </Button.CommandParameter>
- </Button>
- vm:
- public ICommand CMD
- {
- get
- {
- return new DelegateCommand<MultiDelegateObjects>(x =>
- {
- //使用key或索引来获取集合的元素。key不区分大小写.
- //使用key可以不要考虑在xaml中的位置。
- var obj0=x["s1"] as Page;//或x.GetValue<Page>("s1");
- var obj1=x["s2"].ToString();
- var obj2=x[1].ToString();//obj1==obj2;
- //.................
- });
- }
- }
原文地址:http://blog.csdn.net/zeroswl/article/details/6132279
0 0
- MVVM模式下为Command传递多个参数
- mvvm---如何在xaml里,把多个参数传入到command
- mvvm---如何在xaml里,把多个参数传入到command
- MVVM中轻松实现Command绑定(二)传递Command参数
- MVVM中轻松实现Command绑定(二)传递Command参数
- Windows Phone 7 MVVM模式数据绑定和传递参数
- Windows Phone 7 MVVM模式数据绑定和传递参数
- 为应用添加多个Activity与参数传递
- 为应用添加多个Activity与参数传递
- MVVM模式---Command与CommandParameter的使用
- showModalDialog传递多个参数
- 多个参数的传递
- HyperLink传递多个参数
- setTimeout传递多个参数
- LinkButton 传递多个参数
- javascript传递多个参数
- ibatis 传递多个参数
- Extjs 多个参数传递
- hdu 1022 Train Problem I (栈的应用)
- linux查找目录下的所有文件中是否含有某个字符串
- Tomcat服务器集群与负载均衡的实现
- 这一个还能用
- 文件操作之3_扫描目录
- MVVM模式下为Command传递多个参数
- 习近平在北大考察:青年要自觉践行社会主义核心价值观
- Mysql导出表结构及表数据mysqldump的用法
- 第十一周项目2(拓展)-职员信息(深复制)
- Android Camera子系统之Linux C应用开发者View
- 【js设计模式笔记---封装】
- nginx下yii伪静态处理
- Android中日期操作
- Java字符串问题Top10