WPF Prism请求导航激活错误

时间:2015-10-23 12:06:34

标签: c# wpf prism

参考StockTraderRI,我在我的shell中创建了一个弹出区域

infBehaviors:RegionPopupBehaviors.CreatePopupRegionWithName="{x:Static inf:RegionNames.SecondaryRegion}"

在模块中我试图将视图加载到弹出窗口

_regionManager.RequestNavigate(RegionNames.SecondaryRegion, new Uri("/OrderDetailsView", UriKind.Relative));

OrderDetailsView是OrderDetailsModule中的一个视图。此时我收到以下错误

Activation error occurred while trying to get instance of type Object, key "OrderDetailsView"

堆栈跟踪如下所示

 at Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetInstance(Type serviceType, String key) in c:\Projects\CommonServiceLocator\main\Microsoft.Practices.ServiceLocation\ServiceLocatorImplBase.cs:line 53
   at Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetInstance[TService](String key) in c:\Projects\CommonServiceLocator\main\Microsoft.Practices.ServiceLocation\ServiceLocatorImplBase.cs:line 103
   at Prism.Regions.RegionNavigationContentLoader.CreateNewRegionItem(String candidateTargetContract)

任何想法我可能做错了什么?

1 个答案:

答案 0 :(得分:1)

您必须注册对象以进行导航。如果您使用的是Prism 6,则必须使用Container.RegisterTypeForNavigation<OrderDetailsView>();

如果使用v5或更低版本,则必须使用container.RegisterType(typeof(object), typeof(OrderDetailsView), "OrderDetailsView");

编辑:如果使用MEF,则必须在“导出属性”中提供视图名称:

[Export("OrderDetailsView")]
public class OrderDetailsView : UserControl
{ ... }