Я только начинаю копаться в шаблоне MVVM для WPF, но, поскольку я не профессиональный разработчик, я иногда чувствую себя немного растерянным.
Основная проблема, с которой я столкнулся, - это решить, кто кого должен создавать: допустим, у меня есть база данных, в которой хранятся собаки и кошки. Я бы тогда имел DatabaseManager, который связывается с базой данных (Unit of Work !?), DogRepository / CatRepository и объектами Dogs / Cats.
С другой стороны у меня есть главное окно, с помощью которого пользователь может открывать / закрывать базу данных, и которое содержит список для кошек и один для собак, поэтому мне нужны MainWindowViewModel, CatsViewModel и DogsViewModel.
Но как мне создать эти объекты? В моем приложении я создаю MainWindow, очевидно. А потом? Создать MainWindowViewModel и передать его в MainWindow или MainWindow создает свой собственный MainWindowViewModel? Как создается DatabaseManager? По MainWindowViewModel?
А как насчет CatsViewModel и соответствующего CatRepository? Создает ли MainWindowViewModel CatsViewModel, который, в свою очередь, создает CatRepository? Я действительно запутался.