Мой общий вопрос, как указано в заголовке, лучше всего загружать данные во время конструкции ViewModel или позже через некоторую обработку событий Loaded?
Я предполагаю, что ответ после построения через некоторую обработку событий Loaded, но мне интересно, как это наиболее четко согласовано между ViewModel и View?
Здесь более подробно о моей ситуации и конкретной проблеме, которую я пытаюсь решить:
Я использую структуру MVVM Light, а также Unity для DI. У меня есть несколько вложенных представлений, каждая связана с соответствующей ViewModel. ViewModels привязаны к каждому представлению корневого управления DataContext с помощью идеи ViewModelLocator, которую Лоран Бугнион внес в MVVM Light. Это позволяет находить ViewModels через статический ресурс и управлять временем жизни ViewModels через инфраструктуру Injection Dependency, в этом случае Unity. Он также позволяет Expression Blend видеть все в отношении ViewModels и как их связывать.
Так или иначе, у меня есть родительский вид, у которого есть привязка к ComboBox к ObservableCollection в его ViewModel. ComboBox SelectedItem также привязан (в двух направлениях) к свойству ViewModel. Когда выбор ComboBox изменяется, это значит инициировать обновления в других представлениях и представлениях. В настоящее время я выполняю это через систему обмена сообщениями, которая находится в MVVM Light. Все это отлично работает и, как ожидается, когда вы выбираете разные элементы в ComboBox.
Тем не менее, ViewModel получает свои данные во время построения через серию вызовов вызова инициализации. Кажется, это проблема только в том случае, если я хочу контролировать, что такое исходный SelectedItem из ComboBox. Используя MVVM Light messaging system, я в настоящее время настроил его, когда установщик свойства ViewModel SelectedItem является тем, кто передает обновление, а другие заинтересованные регистры ViewModels для сообщения в своих конструкторах. Похоже, что в настоящее время я пытаюсь установить SelectedItem через ViewModel во время построения, что не позволяет создавать и регистрировать суб-ViewModels.
Каким будет самый чистый способ координации загрузки данных и начальной настройки SelectedItem в ViewModel? Я действительно хочу придерживаться так мало, как разумно. Я думаю, мне просто нужно, чтобы ViewModel узнал, когда материал загружен, и что он может продолжить загрузку данных и завершить настройку.
Заранее благодарим за ваши ответы.