当 Command 属性在第三方控件中不可用时,用 RelayCommand 替换 Event
我在视图上使用 Devexpress 的 SpinEdit 控件。它有一个名为“EditValueChanging”的事件。我需要从视图的代码隐藏中删除此事件,并在视图模型中使用 RelayCommand。但是,我在控件中找不到任何用于绑定 RelayCommand 的 Command 属性。另外,我无法在视图模型中实现依赖属性,因为我已经使用 Mvvmlight Toolkit 的 ViewModelBase 继承了它(因此 GetValue 和 SetValue 不可用)。 删除视图代码隐藏中 EditValueChanging 事件中存在的逻辑并将其放入我的视图模型中的可能方法是什么?
I am using Devexpress's SpinEdit control on a view. There is an event on it called 'EditValueChanging'. I need to remove this event from the view's code-behind and use RelayCommand in viewmodel instead. However I don't find any Command propery in the control with which to bind the RelayCommand. Also I can't implement a dependency property in my viewmodel as I have already inherited it with Mvvmlight Toolkit's ViewModelBase (hence GetValue and SetValue are not available).
What is the possible way to remove the logic present in EditValueChanging event in my view's code-behind and put it in my viewmodel?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
既然您已经在使用 MVVMLight,那么您是否查看过它的
EventToCommand
行为?文章来自作者
链接到该类的源代码
Since you're already using MVVMLight, have you looked at its
EventToCommand
behavior?Article from the author
Link to source for the class
您可以尝试此链接中找到的代码。它允许您将虚拟机的 RelayCommand 绑定到任何事件,而不仅仅是按钮的命令事件。我一直用它。
You could try the code found in this link. It allows you to bind a VM's RelayCommand to any event, not just a button's command event. I use it all the time.
如果您无论如何使用 MVVM Light,只需使用 EventToCommand 行为即可。您可以将任何事件绑定到命令。
if you use MVVM Light anyway, just use the EventToCommand behavior. you can bind any event to an Command.