Silverlight 如何在prism/mef中重用视图
使用Silverlight 5、Prism 4.1和MEF 我有一个视图,通过它的接口导出 样本:Silverlight 如何在prism/mef中重用视图,silverlight,prism,mef,Silverlight,Prism,Mef,使用Silverlight 5、Prism 4.1和MEF 我有一个视图,通过它的接口导出 样本: [Export(typeof(IUploadListView)), PartCreationPolicy(CreationPolicy.NonShared)] public partial class UploadListView : RadWindow, IUploadListView { } var view = this.serviceLocator.GetInstance<IUpl
[Export(typeof(IUploadListView)), PartCreationPolicy(CreationPolicy.NonShared)]
public partial class UploadListView : RadWindow, IUploadListView
{
}
var view = this.serviceLocator.GetInstance<IUploadListView>();
view.UploadListViewModel.UploadType = UploadType.MyType1;
view.Show();
我有一个模型(比如说一个主菜单模型),它希望重用这个视图2次。视图的每个实例必须被调用并仅显示一次。我更改了参考底图viewmodel上的UploadType,这样行为就会改变
样本:
[Export(typeof(IUploadListView)), PartCreationPolicy(CreationPolicy.NonShared)]
public partial class UploadListView : RadWindow, IUploadListView
{
}
var view = this.serviceLocator.GetInstance<IUploadListView>();
view.UploadListViewModel.UploadType = UploadType.MyType1;
view.Show();
var view=this.serviceLocator.GetInstance();
view.UploadListViewModel.UploadType=UploadType.MyType1;
view.Show();
和其他菜单选项:
var view = this.serviceLocator.GetInstance<IUploadListView>();
view.UploadListViewModel.UploadType = UploadType.MyType2;
view.Show();
var view=this.serviceLocator.GetInstance();
view.UploadListViewModel.UploadType=UploadType.MyType2;
view.Show();
问题是:
- 使用非共享策略时,我确实可以显示唯一的实例。问题在于,当用户按下同一菜单项时,实例会显示两次(或更多)
- 使用共享策略时,当显示第一个视图时,第二个菜单项将重用第一个视图,因此仅显示一个视图
IsNavigationTarget
方法
当为区域调用RequestNavigate
时,将调用IsNavigationTarget
,以允许视图实例决定是否应激活它。如果返回true,则视图将被激活。否则Prism将创建视图的新实例,将其放置在区域中并激活它
有关更多详细信息,请参阅