Является ли вызов процедур UI из класса back-stage приемлемым - PullRequest
2 голосов
/ 18 января 2012

Это вопрос о потоке UI-интерактивного контроля выполнения в приложении .net.

У меня есть приложение для Windows Phone (Silverlight).

Экран пользовательского интерфейса показывает некоторые элементы управления пользователю. Пользователь нажимает кнопку «загрузить аудио», и это вызывает CloudUploadProvider, чтобы начать загрузку. CloudUploadProvider в этом случае вызывается моделью представления (или даже я могу направить запрос выполнения через экземпляр класса третьей стороны для корректности, не имеет значения).

A CloudUploadProvider определяет, запускается ли он впервые, и если он не находит учетные данные для доступа к учетной записи в облаке, он должен попросить пользователя предоставить некоторые из них.

Могу ли я просто вызвать Navigate на страницу входа в облачную учетную запись из класса CloudUploadProvider, или лучше (в соответствии с рекомендациями архитектуры) направить запрос навигации пользовательского интерфейса в какой-либо другой класс или даже модель представления который инициировал запрос на загрузку.

Я пытаюсь придерживаться паттерна MVVM, но вопрос, на который я наткнулся, заключается в том, следует ли разрешить классам BL "back-stage" получать прямой доступ к пользовательскому интерфейсу?

1 Ответ

1 голос
/ 10 февраля 2012

Наличие CloudUploadProvider вызова Navigate для вашего приложения было бы довольно скрытым следствием простой инициации загрузки! Вместо этого я бы предложил, чтобы CloudUploadProvider бросил ArgumentException или поднял Event, или вернул бы непосредственно какой-либо код ошибки или сообщение, в котором указано «Отсутствуют учетные данные облака». Таким образом, пользовательский интерфейс может прослушивать это сообщение и контролировать то, что происходит, когда учетные данные отсутствуют.

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

Только мои два цента - надеюсь, это поможет!

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