Mvvm 使用MEF创建棱柱视图的多个实例

Mvvm 使用MEF创建棱柱视图的多个实例,mvvm,prism,Mvvm,Prism,在我的应用程序中,我希望使用PRISM/MEF创建同一视图的多个实例 我的视图和视图模型都具有PartCreationPolicy非共享,但它不会创建多个视图。相反,它会更改已打开视图中的内容 客户视图的顶部 [ViewExport("CustomerView")] [Export] [PartCreationPolicy(CreationPolicy.NonShared)] public partial class CustomerView : UserControl { public

在我的应用程序中,我希望使用PRISM/MEF创建同一视图的多个实例

我的视图和视图模型都具有PartCreationPolicy非共享,但它不会创建多个视图。相反,它会更改已打开视图中的内容

客户视图的顶部

[ViewExport("CustomerView")]
[Export]
[PartCreationPolicy(CreationPolicy.NonShared)]
public partial class CustomerView : UserControl
{
    public CustomerView()
    {
        InitializeComponent();

    }
CustomerServiceWModel的顶部

//[Export(typeof(CustomerViewModel))]
[Export]
[PartCreationPolicy(CreationPolicy.NonShared)]
public class CustomerViewModel : NotificationObject, INavigationAware
{
    private ICustomerRepository _custRepository;
这就是我如何调用传递客户id的视图

        UriQuery parameters = new UriQuery();
        parameters.Add("CustomerID", CurrentItem.CustomerID.ToString());

        _regionManager.RequestNavigate(RegionNames.MainRegion,
                                        new Uri("CustomerView" + parameters.ToString(), UriKind.Relative),
                                        NavigationCompleted);
当我使用ServiceLocator.GetInstance调用视图时,它每次都会打开一个新视图,但我无法传递客户ID

         _regionManager.Regions[RegionNames.MainRegion].Add(_serviceLocator.GetInstance<CustomerView>());

请帮我做这个。我真正想做的是创建同一视图的多个实例,传递一些ID客户ID,例如

您是否在ViewModel上实现了IsNavigationTarget,以便在客户ID不匹配时返回false

    public bool IsNavigationTarget(NavigationContext navigationContext)
    {
        return navigationContext.Parameters["CustomerID"] == this.CustomerID.ToString();

    }

您是否在ViewModel上实现了IsNavigationTarget,以便在CustomerID不匹配时返回false

    public bool IsNavigationTarget(NavigationContext navigationContext)
    {
        return navigationContext.Parameters["CustomerID"] == this.CustomerID.ToString();

    }