【发布时间】:2010-12-11 02:30:40
【问题描述】:
我有遗留的 windows 窗体用户控件,它公开了几个公共方法。我将此控件包装在 wpf 用户控件上,并在新的 wpf 用户控件上使用中继命令封装方法。
现在我的问题是如何使用 mvvm 模式在我的用户控件上执行来自 viewmodel 的命令,该 viewmodel 与托管新 wpf 用户控件的视图一起使用。
【问题讨论】:
标签: wpf user-controls command
我有遗留的 windows 窗体用户控件,它公开了几个公共方法。我将此控件包装在 wpf 用户控件上,并在新的 wpf 用户控件上使用中继命令封装方法。
现在我的问题是如何使用 mvvm 模式在我的用户控件上执行来自 viewmodel 的命令,该 viewmodel 与托管新 wpf 用户控件的视图一起使用。
【问题讨论】:
标签: wpf user-controls command
使用 PRISM 事件聚合器?您可以从 ViewModel 触发一个事件,从您的 Usercontrol 订阅它。
http://www.codeproject.com/Articles/355473/Prism-EventAggregator-Sample https://msdn.microsoft.com/en-us/library/ff921122.aspx
【讨论】:
我很想知道如何让它与绑定一起工作。需要将模式设置为 OneWayToSource 才能从用户控件中获取命令。棘手的部分是命令的初始化必须在用户控件的加载事件中完成。如果您尝试在构造函数内部执行此操作,您最终会得到绑定的默认初始化,该初始化可能为 null。
【讨论】:
在视图模型中你必须添加一个字段说
Public ICommand CommandOne
现在此命令将根据您的要求/条件创建一个新的 RelayCommand 对象。
现在,您可以将此“CommandOne”命令与控件表单上的任何对象说按钮绑定。
因此,无论何时单击按钮,都会创建 RelayCommand 对象并执行作为参数提供给它的操作。
希望它对你有用。
【讨论】: