Я думаю, что лучшим в вашем случае было бы разделить все возможные данные в системе на классы данных - метатипы.после этого в xml укажите метатип данных, чтобы ваши данные всегда имели метатип.И когда перед созданием представления вы должны прочитать все метатипы для данных, которые вы намереваетесь отображать, и создать элементы управления экраном в соответствии с этими метатипами.После этого вы можете загрузить и отобразить данные.Такой подход хорошо работает в моей маленькой программе, и я думаю, что он даст хорошие результаты и в вашей системе.
[РЕДАКТИРОВАТЬ]
ОК, ваше приложение включает в себя бизнес-домен (ваши бизнес-данные, бизнес-логика и правила отображения данных).Все эти вещи вы разделили на три части: Model, View и ViewModel.Как я правильно понимаю, ваш вопрос правдив о ViewModel.
Например, ваше гипотетическое приложение содержит информацию о сотруднике и предполагает, что каждый сотрудник может иметь три типа информации о себе:
- Личная информация (Имя, дата рождения, фото, домашний адрес, номер мобильного телефона *
- Информация об образовании (информация об образовании, список пройденных учебных курсов)
- Информация о профессиональном опыте (список успешно завершенных коммерческих проектов)
Итак, у нас есть домен - сотрудник.Этот домен можно разделить на три метатипа:
- Персональный метатип
- Метатип образования
- Метатип профессионального опыта
Для каждого метатипа мыдолжен создать подэкран, который будет отображать информацию метатипа в соответствии с бизнес-правилами.Я рекомендую вам создавать подэкраны метатипа с шаблоном MVC, потому что в случае редактирования данных может быть применено какое-то специальное правило редактирования или проверка данных.После создания каждого подэкрана мы можем свободно отображать метаинформацию каждого типа в системе.
Например, ваше приложение загрузило информацию о сотруднике.После этого вы можете определить, какой метатип представлен в загруженных данных и может принудительно создать соответствующие подэкраны.Последняя часть работы - передача соответствующих данных на каждый подэкран.
Это было очень расплывчатое объяснение, извините за мой английский, если у вас есть какие-либо вопросы по поводу того, что я объяснил, не стесняйтесь и задайте вопрос снова