ViewModels должны быть связаны с концепциями пользовательского интерфейса, а не обязательно с концепциями домена.Итак, в вашем примере я могу представить один экран, который показывает детали организации и список сред;щелкнув Окружение, вы попадете на экран сведений, на котором отобразится список машин;и щелкнув один из них, вы попадете в представление сведений о машине.
В этом примере есть 2 разных представления среды или компьютера, сводное представление, занимающее строку в списке, и представление сведений,занимает лучшую часть экрана - каждый из которых должен иметь свою собственную ViewModel.Я бы, вероятно, создал для этого ViewModels так:
OrganizationDetailsViewModel
----List of EnvironmentSummaryViewModels
EnvironmentDetailsViewModel
----List of MachineSummaryViewModels
MachineDetailsViewModel
В зависимости от того, насколько сложен ваш пользовательский интерфейс, вложение может стать глубже.Давайте представим, что у вас был маленький графический индикатор состояния для среды, которая смотрела на состояние и отображала определенный цвет.Вы можете создать отдельную EnvironmentStatusViewModel, которая затем будет вложена в EnvironmentSummaryViewModel и, возможно, также вложена в EnvironmentDetailsViewModel.