最近在学习使用WPF的MVVM,实践中发现ComandParameter不知道怎么传递到ViewModel中来,在网上找了一些朋友的解决办法大多数使用IComand来解决实现如下:
//这里目的在于将DataGrid选中行传递进来进行删除 public ICommand DelCmd { get { return new DelegateCommand<object>((para) => { SelectStudet = (Students)para; //删除学生 DelStudent(); }); } }
以上代码能够解决我遇到的问题,但是自己想想既然Prism是一个成熟的框架,不应该出现这种传参都实现不了的问题啊,随后我就仔细看了一下Prism的DelegateCommand所在的类,发现他有一个DelegateCommand<T>的定义,随后问题迎刃而解,如下:
//命令定义 public DelegateCommand<object> DeleCmd { get; set; }
//命令初始化 public MainWindowViewModel() { this.GetAllStudents(); DeleCmd = new DelegateCommand<object>(new Action<object>((para) => { DeleStudent(para); })); }
这样就能解决使用Prism传递参数的问题了。
ps:虽然这不是什么高深的问题,但是这反映了我个人的一些缺点:总是在遇到问题的时候去求助度娘,在实际项目开发中为了效率,这也无可厚非,但是在平常自己的学习中还需要多多思考,多多培养自己去解决问题的能力,写这篇文章谨以此来勉励自己,也希望大多数新研发人员不要有遇到问题就去找别人的解决方法的想法。(文中如有言辞不准确的地方,谢谢大家能够指出来,毕竟我也是菜 ,希望大家多多指点,哈哈!)
时间: 2024-10-09 07:03:09