Wpf Mvvm和Mef以及项目控制模板

Wpf Mvvm和Mef以及项目控制模板,wpf,mvvm,mef,Wpf,Mvvm,Mef,我的WPF应用程序上有以下案例: 我有一个主用户控件及其绑定到控件datacontext的MainViewModel 在主控件中,我有一个item控件,它将item source绑定到List item控件有一个用户控件作为其模板,用于绘制用户详细信息,每个模板都有一个用户作为其Datacontext 我的问题: 如何在模板用户控件中使用主控件datacontext(MainViewModel)。我曾尝试使用mef导入MainViewModel,但问题是它是通过创建策略“非共享”导出的,因此导入

我的WPF应用程序上有以下案例:

我有一个主用户控件及其绑定到控件datacontext的MainViewModel

在主控件中,我有一个item控件,它将item source绑定到List

item控件有一个用户控件作为其模板,用于绘制用户详细信息,每个模板都有一个用户作为其Datacontext

我的问题:

如何在模板用户控件中使用主控件datacontext(MainViewModel)。我曾尝试使用mef导入MainViewModel,但问题是它是通过创建策略“非共享”导出的,因此导入将带来MainViewModel的新实例,而不是主控件的实例


提前感谢…

如果您试图使用MEF,则始终可以使用唯一的名称组合现有值,例如:

MainViewModel vm = DataContext;
container.ComposeExportedValue("SharedViewModel", vm);
这样,您就可以始终在用户控件中为其提供导入:

[Import("SharedViewModel")]
public MainViewModel ViewModel { get; set; }

其中,
ComposeExportedValue
是属于
AttributedModelServices
类型的扩展方法。

您的列表/集合看起来像这样吗<代码>ObservableCollection工作区主控件绑定到MainViewModel,在MainViewModel中我有ObservableCollection,集合绑定到item control的item source,而项控件内的数据模板(如您所知)是用户在其数据上下文上创建的。我通过导入
ViewModel
resourceddictionary
(其中包含对
ViewModel
View
的引用)来处理此问题。您可以在模板中的绑定中使用相对资源,直到您可以访问mainview/mainviewdatacontext。我认为您需要添加更多详细信息,以便我们能够帮助您。可能会添加一些示例代码,说明您正在尝试执行的操作,或者一些不起作用的操作。