【发布时间】:2012-10-17 07:35:48
【问题描述】:
使用 Silverlight 5、Prism 4.1 和 MEF。
我有一个视图,通过它的接口导出。
示例:
[Export(typeof(IUploadListView)), PartCreationPolicy(CreationPolicy.NonShared)]
public partial class UploadListView : RadWindow, IUploadListView
{
}
我有一个模型(比如说一个主菜单模型),它想要重复使用这个视图 2 次。视图的每个实例都必须被调用并只显示一次。我更改了底层视图模型上的 UploadType,以便行为发生变化。
示例:
var view = this.serviceLocator.GetInstance<IUploadListView>();
view.UploadListViewModel.UploadType = UploadType.MyType1;
view.Show();
和其他菜单选项:
var view = this.serviceLocator.GetInstance<IUploadListView>();
view.UploadListViewModel.UploadType = UploadType.MyType2;
view.Show();
问题是这样的:
- 当使用 NonShared 策略时,我确实可以看到唯一的实例。问题在于,当用户按下相同的菜单项时,实例会显示两次(或更多次)。
- 使用共享策略时,当显示第一个视图时,第二个菜单项将重用第一个视图,因此只显示一个视图。
我想要的是我必须能够检查是否显示了 IUploadListView 类型的实例,当发生这种情况时,我只需重用该实例并调用 Show()。当没有找到实例时,我希望 MEF 为我创建它(使用服务定位器)。
有没有办法做到这一点?
【问题讨论】:
标签: silverlight prism mef