Как получить доступ к ViewModel для View - PullRequest
4 голосов
/ 02 марта 2012

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

Каков наилучший способ получения экземпляра ViewModel в различных точках моего приложения?

Я мог бы создать синглтон ViewModel, но это не правильно.1006 * Есть предложения?

Ответы [ 2 ]

1 голос
/ 02 марта 2012

Я думаю, что для этого есть разные концепции. У каждого есть свои плюсы и минусы ....

1.) Если у вас нет параметров в конструкторе модели представления, вы можете использовать свойство DataContext элемента управления, представления, страницы для привязки модели представления. Это раскручивает экземпляр за просмотр ...

2.) Если у вас есть сложные или составные модели представления с инжекторами конструктора ... Лучшим способом будет шаблон локатора ViewModel, основанный на шаблоне локатора службы.

http://johnpapa.net/simple-viewmodel-locator-for-mvvm-the-patients-have-left-the-asylum http://blog.roboblob.com/tag/viewmodellocator/

3.) Вы должны сначала подумать о представлении или модели сначала и, возможно, о чем-то вроде брака модели представления ... http://wildermuth.com/2009/5/22/Which_came_first_the_View_or_the_Model

НТН

0 голосов
/ 02 марта 2012

Я думаю, что вы ищете что-то вроде Messenger , где ваша viewmodel может регистрировать сообщения для изменения вашего свойства строки, а другие компоненты могут отправлять сообщения через Messenger.

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

РЕДАКТИРОВАТЬ: другой, но плохой способ - передать экземпляр вашей модели представления всем другим местоположениям.но тогда у вас больше нет слабой связи.

...