Ответственность за ViewModel

Я создаю инструмент, целью которого является загрузка файла на основе нескольких параметров.

Первый шаг - установить (или получить) эти параметры.

Различные наборы параметров извлекаются (скажем, через файлы конфигурации) с помощью FileDownloadsManager: он точно знает, какие параметры использовать для загрузки нужного файла.

эти параметры хранятся в классе, и у меня есть список экземпляров этого класса.

Это означает, что я могу загрузить свой файл с несколькими возможными наборами параметров.

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

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

Чья это ответственность?

У меня такое ощущение, что если ViewModel слишком активен, имея метод это возвращает загруженный файл, это было бы против образца MVVM; что вы думаете об этом?

Бонус: загрузка должна осуществляться в фоновом режиме с помощью асинхронных методов BackgroundWorkers или WebClient.

8
задан alain.janinm 29 April 2012 в 15:39
поделиться

1 ответ

Мне кажется, что все предполагают, что у MVVM нет контроллеров, поскольку они не учли C. MVVM на самом деле является вариацией MVC, «которая просто добавляет ViewModels».

Может, вместо этого его следовало назвать MVCVM?

ViewModels существуют только для того, чтобы выгрузить код "GUI" из представления и содержать какие-либо данные для привязки. ViewModels не должен выполнять никакой обработки. Хорошим тестом является то, что ваша ViewModel может быть протестирована с помощью автоматических модульных тестов и не зависит от источников данных и т. Д. Они не должны иметь представления, откуда на самом деле поступают данные (или кто их отображает).

Хотя на это можно не обращать внимания или избегать, Контроллер отвечает за решение, какую модель данных отображать и в каких представлениях. ViewModel - это мост между моделями (M в MVVM) и представлениями. Это позволяет упростить создание «раздельных» XAML.

Отвечая на ваш вопрос, обработкой должен заниматься контролер. Если необходимо обновить ViewModel для отображения индикаторов занятости и т. Д., Это нормально, но это не ответственность View, Model или ViewModel.

20
ответ дан 5 December 2019 в 08:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: