如何使用 MVVM 将 UserControl 从插件传递到我的主窗口?
Posted
技术标签:
【中文标题】如何使用 MVVM 将 UserControl 从插件传递到我的主窗口?【英文标题】:How can I pass a UserControl from a Plugin to my main window using MVVM? 【发布时间】:2014-10-30 15:54:50 【问题描述】:我有一个基于插件的应用程序,我在其中使用 Mono.Addin 发现插件。每个插件都有自己的 View 和 ViewModel,我不确定将 View 传递给 MainView 的最佳方法。目前我的 MainView 绑定到我的 MainViewModel 上的对象类型,但这要求我在我的插件 ViewModel 中具有 UI 特定的逻辑。我不完全适应这样做,但想不出更好的方法。
我的 MainViewModel 有这个
public object Content
我的 PluginViewModel 会这样做
this.MainViewModel.Content = ViewLocator.Current.ResolveView(this);
【问题讨论】:
【参考方案1】:如果您使用的是 MVVM,那么从视图模型创建视图的常用方法是通过数据模板,并且为了使其正常工作,视图和数据模板都需要合并到应用程序的全局 ResourceDirectory 中。 another answer here 表明使用 MEF 插件架构可以做到这一点,但适应其他架构应该不会太难。
【讨论】:
以上是关于如何使用 MVVM 将 UserControl 从插件传递到我的主窗口?的主要内容,如果未能解决你的问题,请参考以下文章
WPF MVVM 通过事件将 UserControl 从一个 ObservableCollection 移动到另一个
在 UserControl WPF MVVM caliburn 内的 UserControl 之间切换
如何从作为wpf mvvm模式中的窗口打开的视图模型中关闭用户控件?