我正在使用Prism 4和Unity Extensions以及MVVM模式。
public class Bootstrapper : UnityBootstrapper {
protected override void InitializeShell() {
Application.Current.RootVisual = (UIElement) Shell;
}
protected override DependencyObject CreateShell()
{
return ServiceLocator.Current.GetInstance<Shell>();
}
}
ServiceLocator.Current.GetInstance()抛出以下异常:
尝试获取Shell类型的实例时发生激活错误, 关键“”
答案 0 :(得分:0)
shell构造函数中可能有错误。
如果在shell构造函数中有参数,例如,请不要忘记在Bootstrapper的ConfigureContainer中声明:
<强> Bootstrapper.cs 强>
...
protected override void ConfigureContainer()
{
base.ConfigureContainer();
this.Container.RegisterType<IMyService, MyService>(new ContainerControlledLifetimeManager());
}
<强> Shell.cs 强>
...
public Shell(IMyService container)
{
...
}
您可以阅读此文档:http://msdn.microsoft.com/en-us/library/gg430868(v=pandp.40).aspx
答案 1 :(得分:0)
我有两个单独的建议:
1)确保shell.xaml的name属性不为空
2)如果1无助于更改InitializeShell:
IShellView shell = new Shell();
shell.ShowView();
return shell as DependencyObject;
我希望这些可以提供帮助。