WPF Prism 请求导航激活错误
WPF Prism Request Navigate activation error
参考 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)
知道我做错了什么吗?
您必须为导航注册您的对象。如果您使用的是 Prism 6,则必须使用 Container.RegisterTypeForNavigation<OrderDetailsView>();
如果使用 v5 或更低版本,则必须使用 container.RegisterType(typeof(object), typeof(OrderDetailsView), "OrderDetailsView");
编辑:如果使用 MEF,您必须在导出属性中提供视图名称:
[Export("OrderDetailsView")]
public class OrderDetailsView : UserControl
{ ... }
参考 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)
知道我做错了什么吗?
您必须为导航注册您的对象。如果您使用的是 Prism 6,则必须使用 Container.RegisterTypeForNavigation<OrderDetailsView>();
如果使用 v5 或更低版本,则必须使用 container.RegisterType(typeof(object), typeof(OrderDetailsView), "OrderDetailsView");
编辑:如果使用 MEF,您必须在导出属性中提供视图名称:
[Export("OrderDetailsView")]
public class OrderDetailsView : UserControl
{ ... }