Когда мы должны ссылаться на ViewModel из другой ViewModel - PullRequest
0 голосов
/ 02 апреля 2012

Во многих ViewModel мне понадобится коллекция из другой ViewModel.По сути, каждая VIewModel имеет свойство List, которое имеет тип ObservableCollection.и большую часть времени ViewA требуется VIewModelA (для CRUD) и ViewModelB.List (только для чтения).

Какой здесь рекомендуемый подход?

  1. для внедрения ViewModelB вViewModelA и предоставьте свойство EntityBList
  2. добавить / скопировать ту же процедуру GetList в ViewModelA из ViewModelB?
  3. в xaml ViewA, ссылаясь как на ViewModelA, так и на viewModelB

Ответы [ 2 ]

0 голосов
/ 03 апреля 2012

Обычно я использую опцию 1. Инъекция синглтона SharedViewModel в модели представлений, которым нужны данные, работает хорошо.Также легко добавить дополнительные общие данные при необходимости.

0 голосов
/ 02 апреля 2012

1) Не уверен насчет этого.

2) Если вы дублируете код, обычно есть лучшее решение.

Вы можете использовать шаблон синглтона и иметь один класс, содержащий ваши Коллекции. Затем каждая Viewmodel получает доступ к одному и тому же списку. Назовите это DataAccessor или что-то подобное.

3) У меня не было бы ссылок на две разные Viewmodels. Почему бы просто не объединить Viewmodel A и B? Почему они в настоящее время разделены, если они оба имеют дело с ViewA?

...