У меня нет публичного примера, но я сделал это в приложениях Silverlight.
Я использовал каркас навигации Silverlight для организации верхнего уровня контента. Когда фрейм переместился на новую страницу, я создал целую область действия, в которой я определил модель корневого представления страницы, которую я связал со страницей через атрибут:
[ViewModel(typeof(OrdersViewModel))]
public class OrdersView : Page
Когда фрейм перемещался на другую страницу, я располагал область действия до создания следующей.
Тот же шаблон применяется к открытию диалогов. Каждый диалог получает свою собственную область действия и модель представления. Когда он закрывается, область действия времени жизни удаляется.
Есть также ситуации, которые не укладываются аккуратно вдоль этих границ. Иногда вам нужно больше детализации, и вы можете углубиться в жизненные области, используя контекстные области . Эти ситуации, как правило, одноразовые и включают в себя некоторое количество клея, чтобы начать жизненные области.
Я считаю полезным думать о единицах работы : вы вносите изменения в конце каждой жизненной области. Это делает экстент набора данных естественной областью действия.