Как заставить модель представления и модель общаться? - PullRequest
1 голос
/ 15 ноября 2011

Я использую шаблон MVVM для своего приложения. Модель фактически запускает набор тестов параллельно и следит за состоянием теста, включая его результат. Я хочу, чтобы статус и результат отображались в представлении. Я застрял в разработке модели вида.

Проблема заключается в том, что в модели существует множество классов и иерархий подклассов, в которых хранятся все необходимые данные, отображаемые в представлении. Эти данные являются динамическими. Я не уверен, как спроектировать модель представления сейчас.

Я размышлял в том же духе: создайте новую структуру данных в модели представления, которая отражает то, что должно быть отображено в представлении, и получите всю модель представления, которая будет копаться в модели, чтобы получить необходимые данные. В этом случае я запутался, как модель будет обновлять модель представления всякий раз, когда данные изменяются. Или как модель и модель представления взаимодействуют друг с другом, если данные хранятся в разных классах и подклассах.

Ответы [ 2 ]

1 голос
/ 15 ноября 2011

Вы говорите, что пользователь выбирает, какие данные просматривать, поэтому я полагаю, что ваша виртуальная машина может содержать массив моделей и индекс, указывающий, какая из них является "активной", и взаимодействовать только с этой.

ДляВ этой связи решение может состоять в том, чтобы передать модели действие, которое будет вызываться при появлении новых данных, и это действие будет вызывать NotifyPropertyChanged в виртуальной машине.Это будет работать особенно хорошо, если вы убедитесь, что только «активная» модель имеет это действие, в то время как в других это будет нулевое значение, означающее «не запускать обновления».

1 голос
/ 15 ноября 2011

Ваша модель представления должна иметь ссылки на все модели, которые необходимы для отображения данных в представлении. Затем модель представления должна обрабатывать события из классов модели и запускать событие NotifyPropertyChanged.

Если ваш вид сложен и требует большого количества моделей, вы можете разделить его на несколько видов и соответствующую модель вида.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...