"IXXXX уже зарегистрирован" - MVVM-Light

Я использую mvvm-light для моего приложения WP8.

Я продолжаю получать IXXXXX is already registered ошибка, и если я использую это решение: http://developingux.com/2012/06/10/how-to-fix-error-design-time-data-in-blend-with-mvvm-light/

Ошибка исчезла, но теперь я не вижу никаких данных дизайна в Visual Studio и Blend.

Мой вид-модель-локатор IContentService не поднять ошибку, только IFeedAPI):

    public class ViewModelLocator
{
    public ViewModelLocator()
    {
        ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);

        if (ViewModelBase.IsInDesignModeStatic)
        {
            if (SimpleIoc.Default.IsRegistered<IFeedAPI>())
            {
                SimpleIoc.Default.Unregister<IFeedAPI>();
            }

            SimpleIoc.Default.Register<IFeedAPI, DesignData.DesignFeedAPI>();

            SimpleIoc.Default.Register<IContentService, DesignData.DesignContentService>();

        }
        else
        {
            SimpleIoc.Default.Register<IContentService, LocalContentService>();
            SimpleIoc.Default.Register<IFeedAPI, FeedlyFeedAPI>();
        }

        SimpleIoc.Default.Register<ContentControlViewModel>();


    }

    public ContentControlViewModel ContentControlVm
    {
        get
        {
            return ServiceLocator.Current.GetInstance<ContentControlViewModel>();
        }
    }

    public static ViewModelLocator Instance
    {
        get
        {
            return Application.Current.Resources["Locator"] as ViewModelLocator;
        }
    }
}

Когда я не использую контейнер IoC, как показано ниже, все работает отлично (без ошибок и полностью проектные данные).

 public class ViewModelLocator
{
    private ContentControlViewModel _contentControlVm;
    public ContentControlViewModel ContentControlVm
    {
        get
        {
            if(_contentControlVm == null)
            {
                IContentService contentService = null;
                IFeedAPI feedApi = null;

                if (ViewModelBase.IsInDesignModeStatic)
                {
                    contentService = new DesignData.DesignContentService();
                    feedApi = new DesignData.DesignFeedAPI();
                }
                else
                {
                    contentService = new LocalContentService();
                    feedApi = new FeedlyFeedAPI();
                }

                _contentControlVm = new ContentControlViewModel(contentService, feedApi);
            }

            return _contentControlVm;
        }
    }

    public ViewModelLocator()
    {

    }

    public static ViewModelLocator Instance
    {
        get
        {
            return Application.Current.Resources["Locator"] as ViewModelLocator;
        }
    }
}
}

Есть идеи??

0 ответов

Другие вопросы по тегам