MVVM Light ViewModelLocator в отдельной сборке? Проблема режима времени проектирования - PullRequest
4 голосов
/ 09 февраля 2012

Я использую MVVM Light V4 с Ninject. Мои файлы ViewModel находятся в отдельной сборке. Он прекрасно работает, когда ViewModelLocator находится в начальной сборке (Просмотр файлов). Смешиваемость работает.

Я хочу разместить ViewModelLocator в сборке ViewModel, но когда я это делаю, я теряю смешиваемость. После этого он работает нормально только в запущенном приложении (не в режиме разработки).

ViewModelLocator:

static ViewModelLocator()
    {
        ServiceLocator.Initialize();

        if (ViewModelBase.IsInDesignModeStatic)
        {
            using (var module = new DesignBindingsModule())
            {
                ServiceLocator.Load(module);
            }
        }
        else
        {
            using (var module = new DefaultBindingsModule())
            {
                ServiceLocator.Load(module);
            }
        }
    }

[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance",
        "CA1822:MarkMembersAsStatic",
        Justification = "This non-static member is needed for data binding purposes.")]
    public IMainWindowViewModel MainWindow
    {
        get
        {
            return ServiceLocator.Get<IMainWindowViewModel>();
        }
    }

Можно ли поместить ViewModelLocator в отдельную сборку и привязать к нему в режиме разработки?

1 Ответ

0 голосов
/ 11 февраля 2012

Проблема решена. У меня была ошибка в коде. ServiceLocator был инициализирован два раза и выдает исключение, которое не может быть правильно привязано. Странно, что это происходит только у дизайнера, и дизайнер не исключение. Я рефакторинг кода и проблема исчезла. У меня есть все относительные классы ViewModel в отдельной сборке.

...