MVVMLight - ViewModel ссылается на другие ViewModels - PullRequest
1 голос
/ 19 мая 2011

HI

Я использую MVVMLight и хотел бы, чтобы конкретная виртуальная машина ссылалась на свойство другой виртуальной машины. В настоящее время я использую ViewModelLocator.SomeViewModelStatic, чтобы сделать это. Иногда я также хотел бы использовать методы другой модели представления. А также использование ViewModelLocator.SomeViewModelStatic для использования других методов ViewModels.

Это правильный способ общения между ViewModels?

Ответы [ 2 ]

1 голос
/ 19 мая 2011

В таком случае я бы начал с добавления Инверсия контейнера управления к приложению ( Autofac , Ninject или даже MEF (если вы знакомы с ним)) и регистрация во всех ViewModels (вы можете сделать это вручную или те же контейнеры IoC могут искать определенные классы в сборках) и Services .Тогда я бы реализовал ViewModelLocator для работы с IoC таким образом, чтобы он создавал ViewModels (тогда каждая зависимость будет разрешена с помощью внедрения зависимостей, и все, о чем вам нужно беспокоиться, это зарегистрировать все в IoC)

Используя IoC, вы также можете использовать фабричные методы, которые могут создавать для вас экземпляры в ViewModels.

1 голос
/ 19 мая 2011

Иногда я строю дерево виртуальных машин. Например: я создаю виртуальную машину PersonHobbies, добавляя виртуальную машину Person и Hobbies к виртуальной машине PersonHobbies. Этот класс будет иметь все команды, которые охватывают обе другие виртуальные машины.

Я не решаюсь связать виртуальную машину Hobbies с виртуальной машиной Person (или наоборот), потому что будет сложнее использовать виртуальную машину Hobbies без виртуальной машины Person (или наоборот).

Аналогичным образом я создаю представления: в этом примере я могу создать представления как для Person, так и для хобби и использовать эти представления при создании представления PersonHobbies.

...