Mvvm和Mef以及Item控件模板

时间:2011-09-22 08:14:05

标签: wpf mvvm mef

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

我有一个主用户控件,其MainViewModel绑定到控件datacontext。

在主控件中,我有一个项目控件,哪个项目源绑定到List。

item控件有一个用户控件作为模板绘制用户详细信息,我们知道每个模板都有User作为Datacontext。

我的问题:

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

提前致谢...

1 个答案:

答案 0 :(得分:0)

如果您尝试使用MEF,您始终可以使用唯一名称撰写现有值,例如:

MainViewModel vm = DataContext;
container.ComposeExportedValue("SharedViewModel", vm);

这样,您始终可以在用户控件中为其提供导入:

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

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