Я начинаю изучать свет MVVM и начинаю разрабатывать свои разные модели viemModel. Я долго просматривал, чтобы узнать, что я ищу, но я не мог этого найти :-(.
Один образец, который у меня есть, основан на одной модели MainViewModel, которая обрабатывается внутри ModelViewLocator. В большинстве случаев у нас будет более одной модели представления, поэтому должны ли все модели представления быть определены в одном файле ViewModelLocator или мне нужно иметь один ViewModelLocator для каждого представления?
Другими словами, мне нужно получить это: MainViewModel -> MainViewModelLocator PictureViewModel -> PictureViewModelLocator
Хорошо, но еще один вопрос: скажем, у меня есть 3 модели представления, которые я создал как ViewModel1, 2 и 3. В ViewModelLocation я создал ту же структуру, что и MainViewModel, чтобы создать ее экземпляр и создать основное свойство для доступ к экземпляру Models.
Проблема, которую я обнаружил, заключается в том, что если для каждого из моих представлений, соответствующих каждой модели представления, задан собственный контекст данных как ViewModelLocator.ViewModelx, экземпляр представления создается во время разработки, и это вызывает у меня проблемы, если во время конструктора моего представления мне нужно вызвать внешний класс, который получает данные из службы WCF. Выдает "ошибку создания экземпляра".
С другой стороны, если в каждом представлении я связываюсь, то НЕ из ViewModelLocator.ViewModelx, а вместо этого непосредственно ViewModelx, тогда я не получаю эту ошибку и работаю лучше.
Итак, как правильно поступить и логический путь:
1. Должна ли MainViewModel создавать все остальные модели просмотра? 2. Должен ли каждый вид быть привязан к своему собственному свойству MainStatic в ViewModelLocator? 3. Создает ли каждое представление свой собственный экземпляр ViewModel?
То, как я это сделал, заключается в том, что мой View, который возвращает служебные данные из внешнего класса во время создания конструктора ViewModel, работает, только если я привязываю его непосредственно к ViewModel, есть ли у него проблемы с этим?