2011-07-07 5 views
2

とPRISMビューの複数のインスタンスを作成し、私は私のビューとビューモデルの両方がPartCreationPolicyが非共有持っているが、それは作成されませんPRISM/MEF私のアプリケーションではMEF

を使用して、同じビューの複数のインスタンスを作成したいです複数のビュー。その代わりに、すでに開いているビューのコンテンツが変更されます。

カスタマー・ビューの上部

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

    } 

CustomerViewModel

の上部
//[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); 

私はそれが新しいビュー毎回を開きますが、私は、顧客のIDを渡すことはできませんServiceLocator.GetInstanceを使用してビューを呼び出します。

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

私を助けてください。私はちょうどいくつかのID(顧客IDなど)を渡して同じビューの複数のインスタンスを作成することです

答えて

0

ViewModelにIsNavigationTargetを実装して、customerIDが一致しない場合にfalseを返すようにしましたか?

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

    } 
関連する問題