Я пытаюсь разобраться с mvvm и придумала тестовое приложение, которое, я думаю, даст мне хорошую основу. Предположим, у моего приложения есть служба, которая выходит каждую минуту и получает последнюю информацию о прибытии и отлете рейса в аэропорту. Теперь предположим, что у меня есть 3 разных представления: InboundView, OutboundView и GateView. Представления «Входящий» и «Исходящий» будут просто отображать различные детали полета для входящих и исходящих рейсов, которые, я уверен, мы все видели на табло в аэропорту. GateView будет отображать аналогичную информацию о рейсе, но может быть отсортировано по воротам # вместо рейса #.
Таким образом, модель объекта Flight будет содержать детали данных полета, а также экземпляр объекта Gate, который будет соответствующим образом обновляться после прибытия рейса.
Таким образом, все 3 вида используют один и тот же сервис данных полета, и я знаю, что могу передать экземпляр этого сервиса каждой виртуальной машине, но тогда мне нужно будет подключить соответствующие события INPC для каждой модели вида, и это кажется меньше, чем идеально, так как количество просмотров / vms увеличивается.
Прямо сейчас каждая виртуальная машина использует ListCollectionView, обернутый вокруг переданной коллекции полетных данных, и я просто сортирую / фильтрую на основе входящих / исходящих и т. Д., Но я надеялся включить результаты службы в своего рода родительское представление модель, которая затем передавала бы ссылку на себя во вложенные представления, а затем я мог просто обрабатывать все события INPC и т. д. на уровне модели родительского представления, и они автоматически переходили к каждому из вложенных представлений, если данные на конкретные изменения полета (например, его ворота) вместо того, чтобы обрабатывать это отдельно в каждой из виртуальных машин.
Я изучил среду Messenger для MVVM Light, но все равно кажется, что каждая из под-виртуальных машин должна была бы зарегистрироваться для сообщения и ответить на него индивидуально.
Имеет ли это смысл? Я на правильном пути здесь?