Как управлять созданием View и ViewModel в Silverlight? - PullRequest
2 голосов
/ 12 июля 2011

В моем приложении silverlight есть 2 страницы: PageA и PageB.Каждая страница привязана к ней соответствующим ViewModel, PageAViewModel и PageBViewModel.(Я установил ViewModel в DataContext View внутри xaml.)

Пользователь может переключаться между этими страницами назад и вперед, когда пользователь переключается между этими страницами, он создает новый экземпляр PageA и PageB, который также создает новый объект его ViewModel, которыйЯ не хочуЯ пытаюсь установить NavigationCacheMode на Включить , теперь все представления создают экземпляр только при первом переходе пользователя на эту страницу, это также означает, что ViewModel имеет только один экземпляр.

Я хочузнать, как управлять пользовательским интерфейсом для создания только одного экземпляра View и контролировать, когда создавать новый экземпляр его ViewModel?

Ответы [ 2 ]

2 голосов
/ 12 июля 2011

Здесь IOC (Inversion Of Control), как и Unity, пригодится.

Вы бы просто зарегистрировали ViewModel как синглтон ( только один, когда-либо ) в Unity.

Вместо того, чтобы встраивать ViewModel в View (действительно плохая практика для их точного подключения), вы указываете, какой тип ViewModel , который требуется представлению при его создании, и соответствующая ViewModel будет «внедрена» в поле зрения.

Базовый MVVM, без какой-либо другой инфраструктуры для инъекций, не дает вам ничего особенного (за исключением отделения от вида).

1 голос
/ 12 июля 2011

Вы пытались использовать MVVM light framework для своего приложения. Он поддерживает концепцию локатора модели представления, которая позволяет избежать повторного создания экземпляра вашей виртуальной машины каждый раз, когда пользователь нажимает на страницу. Взгляните на презентацию Лорана Бюньона здесь .

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