我的WPF应用程序中有以下案例:
我有一个主用户控件,其MainViewModel绑定到控件datacontext。
在主控件中,我有一个项目控件,哪个项目源绑定到List。
item控件有一个用户控件作为模板绘制用户详细信息,我们知道每个模板都有User作为Datacontext。
我的问题:
如何在模板用户控件中使用Main控件datacontext(MainViewModel)。我尝试使用mef导入MainViewModel,但问题是导出时使用创建策略“NonShared”,因此导入将带来MainViewModel的新实例而不是Main控件的实例。
提前致谢...
答案 0 :(得分:0)
如果您尝试使用MEF,您始终可以使用唯一名称撰写现有值,例如:
MainViewModel vm = DataContext;
container.ComposeExportedValue("SharedViewModel", vm);
这样,您始终可以在用户控件中为其提供导入:
[Import("SharedViewModel")]
public MainViewModel ViewModel { get; set; }
其中ComposeExportedValue
是属于AttributedModelServices
类型的扩展方法。