Как мне делиться данными между несколькими ViewModels?
MVVM: Обмен данными между ViewModels
Например, в приложении используется класс Project.
public class Project : ModelBase
{
private string _projectName;
public string ProjectName
{
get { return _projectName; }
set
{
_projectName = value;
RaisePropertyChanged(() => ProjectName);
}
}
}
В нескольких приложениях ViewModels необходимо получить доступ к ActiveProject.
Каков наилучший способ поделиться проектом между ViewModels?
- Посредник Pattern? (Сообщения)
- Статического объект
- Singleton шаблон (если да, то как?)
Я использовал сообщения раньше, но это нужно много codding. Для всех ViewModels я должен создать свойство ActiveProject, а также зарегистрировать мессенджер, чтобы его обновить.
Я использую рамки MVVM Light.
Любой пример кода был бы оценен.
Является ли ваш 'ActiveProject' создан где-то одной из моделей? Если это так, обмен сообщениями, вероятно, будет лучшим (и это не *, что * verbose). Другой вариант заключается в том, чтобы вводить «ActiveProject» в каждую модель представления, которая ему нужна, при установке времени жизни «ActiveProject» в singleton в выбранном контейнере IoC - третий вариант, который вы предложили ... Но пока это в основном угадывает с моей стороны , –
@ TrustMe-I'maDoctor Почему мы, WPF, всегда слишком усложняем? Не было бы намного проще сохранить это в классе 'App' как статическом свойстве? –
@HighCore Это всегда вариант ... Статическое свойство чтения-записи неправильно меня раздражает, но слишком легко злоупотреблять. :) –