Я столкнулся с этой проблемой при имея ViewModel
с несколькими конструкторами в MVVM Light:Исключения при использовании нескольких конструкторов с MVVM светом и ViewModelLocator
У меня есть модель представления, которая имеет пустое CTOR, а затем я создал второй, который получает параметр (желая сделать что-то еще в некоторых случаях ...). Если я попытаюсь запустить приложение, я получу:
Невозможно зарегистрировать: Множество конструкторов найдено в Inner_VM, но не отмечено с помощью PreferredConstructor.
Это происходит только тогда, когда я зарегистрировать ViewModel
в Locator
:
SimpleIoc.Default.Register<Inner_VM>();
, а затем использовать это в свойстве:
public Inner_VM Inner
{
get { return ServiceLocator.Current.GetInstance<Inner_VM>(); }
}
Если я опускаю регистрацию ViewModel
, а затем используйте это в собственности:
public Inner_VM Inner
{
get { return new Inner_VM(); }
}
все, кажется, работает ...
Я думал, что первый вариант использует статический экземпляр, который повторно используется, а второй просто создает новый каждый раз, когда я его использую. (это не имеет особого значения в моем приложении, но я пытаюсь понять, почему, и не смог найти ничего, чтобы объяснить это, даже после поиска в этом вопросе как для S.O. & google).
Любая помощь будет приветствоваться.
Пытался, но затем каждый раз, когда кто-то называет это ViewModel, что конструктор вызывается ... ([PreferredConstructor] на вершине CTOR, кажется, так же, как PreferredConstructorAttribute ...) – Noctis