WPF - требуется ИИ, можно с детьми
Ребята, не охота тут устраивать лекции. Ну, почитайте книжки и стэковерфлоу.
View-model - это не какой-то супер-пупер класс, который может быть один на одно представление. Model - это не какой-то супер-пупер класс, который в предметном домене только один и к нему обращается view-model. Это всё - концепции, названия. Model - это совокупность всех классов, объектов, данных, конфигураций и всего прочего, что составляет предметную область приложения. То есть, это то, ЗАЧЕМ вообще приложение есть. View - это некое представление чего-то. Окошко диалоговое - это view. Но и единичный комбобокс в этом окошке - это тоже view.
А view-model - это просто прослойка между view и model. Её задача - адаптировать model так, чтобы её можно было показать. И всё! Никакой бизнес-логики там, вы что! Бизнес-логика - на доменном уровне. View-model содержит логику, но не бизнес. Во view-model логика приложения (когда какие окошки показывать, когда размер окна сохранять, где апдейты качать и т.п.) и есс-но логика, необходимая для отображения (сортировка всякая, фильтрация там и пр.)
По поводу того, почему может быть коллекция view-model. Как я уже написал, view может быть единичным элементом большой конструкции. Допустим, у нас 10 элементов управления, достаточно сложных (например, 5 кнопок, 2 комбо и 3 текстбокса), но одинаковых. Так вот имеет смысл создать класс view-model для этого элемента управления, засунуть 10 объектов этого класса в коллекцию, забайндить эту коллекцию к ItemsSource ItemsControl'а и опрделить DataTemplate для этого всего. В итоге получаем стройное решение, где у каждого класса свои обязанности.
В общем, предлагаю всё же поднабраться опыта. И почитайте, например, да хоть тот же гайд к Prism. Многое прояснится.