作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将WP8项目从自制的MVVM实现调整为MVVM Light。
应用程序编译时没有错误,但是当我在Expression Blend中打开MainPage.xaml时,会出现以下错误:
类project.Services.INavigationService已被注册。 App.xaml
我的ViewModelLocator.cs:
/// <summary>
/// Initializes a new instance of the ViewModelLocator class.
/// </summary>
public ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
if (ViewModelBase.IsInDesignModeStatic)
{
}
else
{
if (!SimpleIoc.Default.IsRegistered<INavigationService>())
{
SimpleIoc.Default.Register<INavigationService>(() => new NavigationService());
}
}
SimpleIoc.Default.Register<MainPage>();
SimpleIoc.Default.Register<SettingsEditViewModel>();
}
最佳答案
我遇到了同样的问题,这似乎是与XAML-Designer,静态工厂/定位器和对象的设计时创建结合在一起的Visual Studio问题。但是:解决方案如下:
SimpleIoc.Default.Register<INavigationService>();
SimpleIoc.Default.Unregister<INavigationService>();
SimpleIoc.Default.Register<INavigationService>(() => new NavigationService());
static ViewModelLocator() { ... }
ViewModelLocator
),并且每当更改代码中的某些内容时,都会触发编译器,并且无需重新注销即可重新创建ViewModelLocator服务。因此它将提示在工厂中已经被注册。从理论上讲,当多次注册没有工厂的类时,也应该有一个错误。
关于windows-phone-7 - MVVM-light已经有一家工厂注册了INavigationService,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17594058/
我是一名优秀的程序员,十分优秀!