Windows Phone 7, MVVM, Silverlight и лучшие рекомендации по навигации / шаблоны и стратегии - PullRequest
4 голосов
/ 01 мая 2010

При создании приложения для Windows Phone 7. используя шаблон MVVM, мы изо всех сил пытались справиться с шаблоном или техникой для централизации логики навигации, которая будет соответствовать MVVM.

Чтобы привести пример, каждый раз приложение. вызывает наш веб-сервис, мы проверяем, что маркер входа мы назначили приложение. ранее не истек. Мы всегда возвращаем некоторый статус на телефон из веб-службы, и одним из них может быть Enum.AuthenticationExpired.

Если мы получим это, я думаю, что мы предупредим пользователя и вернемся к экрану входа. (это один из многих примеров статуса, который мы можем получить)

Теперь, желая сохранить вещи СУХИМ, такая логика кажется, что она должна быть в одном месте. В этом и заключается мой вопрос.

Как мне следует моделировать навигацию, которая использует (по существу) переключатель или операторы if, чтобы указать нам, куда переходить дальше, не повторяя это при каждом просмотре.

Существуют ли признанные образцы или методы, которые кто-то может порекомендовать?

Спасибо

Ответы [ 2 ]

3 голосов
/ 01 мая 2010

Звучит так, как будто у вас есть «состояние» (что-то, что вы бы включили), за которым следует действие (по которому вы должны перейти). Есть несколько способов справиться с этим. Можно было бы создать INavigationService, который предоставляет метод NavigateTo (что-то), где что-то инкапсулирует текущее состояние, а метод возвращает следующее состояние. Возможно, этот метод также сам выполняет обмен страниц.

Другим способом может быть создание IEnumerable, который управляет страницами, что имело бы смысл в приложении, движущемся вперед, но немного размыто, когда вы пытаетесь управлять кнопкой «назад».

С помощью INavigate вы можете перемещать и извлекать страницы (ставить / удалять), а затем вход в систему будет перемещен в верхнюю часть стека и выполнит свою задачу, а затем откроет страницу для возврата.

2 голосов
/ 01 мая 2010

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

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