在我的应用程序中,我想使用PRISM / MEF
创建同一视图的多个实例我的视图和视图模型都使PartCreationPolicy不共享,但它不会创建多个视图。相反,它会更改已打开视图中的内容。
客户视图的顶部
[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);
当我使用ServiceLocator.GetInstance调用视图时,它每次都会打开一个新视图,但我无法传递客户ID。
_regionManager.Regions[RegionNames.MainRegion].Add(_serviceLocator.GetInstance<CustomerView>());
请帮我解决这个问题。我真正想做的是创建多个相同视图的实例,传递一些ID(例如客户ID)
答案 0 :(得分:0)
您是否在ViewModel上实现了IsNavigationTarget,以便在customerID不匹配时返回false?
public bool IsNavigationTarget(NavigationContext navigationContext)
{
return navigationContext.Parameters["CustomerID"] == this.CustomerID.ToString();
}