Вопрос: У меня есть две модели, которые используют службу со списком. Мой вопрос заключается в том, как настроить уведомление, чтобы оба режима просмотра знали, когда этот список изменен. Описание ниже и код, где я нахожусь.Множественные режимы просмотра, совместно использующие услугу с уведомлением
Я нашел этот пример HERE, который выглядит правильно для того, что я пытаюсь сделать, но у меня есть вопрос относительно того, как быть уведомленным в моих моделях изменения моего сервиса. Я добавлю код, который я издевался, чтобы узнать, правильно ли я нахожусь. Я использую WPF/MVVM Light.
Первая часть - это сервис с интерфейсом, который будет иметь список данных, в этом примере я использую список строк. Я хочу, чтобы свойство в обеих моделях просмотра имело доступ к этому списку данных и уведомлялось, когда оно было изменено. Я думаю, что меня бросает интерфейс IOC в мои модели просмотра. Я все больше понимаю, почему это хорошо, но я все еще обдумываю его, и я не уверен, как настроить уведомление, когда список изменен в службе. Если моя служба не была введена, я мог бы установить событие или свойство, к которому мое свойство viewmodel будет иметь доступ к get/set, но при инъекции моей службы не отображаются мои общедоступные поля, а только методы. Это ново для меня, поэтому очень вероятно, что я не понимаю это правильно или что-то не хватает.
Я использовал список в своей службе вместо ObservableCollection на основе некоторого чтения, которое я сделал, предупреждая об использовании ObservableCollection здесь. Спасибо вам за любую помощь.
public class MyService : IMyService
{
private List<string> myList = new List<string>();
public List<string> getMyList()
{
return this.myList;
}
public void setMyList(List<string> value)
{
this.myList = value;
}
public void addValue(string value)
{
this.myList.Add(value);
}
public void insertValue(int index, string value)
{
this.myList.Insert(index, value);
}
}
public class MyViewModelOne : ViewModelBase
{
private readonly IMyService myService;
public MyViewModelOne(IMyService myService)
{
this.myService = myService;
}
public List<string> MyProperty // control item source will bind to this
{
get
{
return this.myService.getSource();
}
}
public void setSomeValue(value)
{
this.myService.addValue(value);
}
}
public class MyViewModelTwo : ViewModelBase
{
private readonly IMyService myService;
public MyViewModelTwo(IMyService myService)
{
this.myService = myService;
}
public List<string> MyProperty // control item source will bind to this
{
get
{
return this.myService.getSource();
}
}
public void setSomeValue(value)
{
this.myService.addValue(value);
}
}
Так что это вопрос? –
Я не знаю, как обращаться с уведомлением. Скажите, что viewmodelone меняет список в сервисе, как он будет знать об этом? Общие данные, но используются разные в каждой модели. - Попробуйте изменить слово выше, чтобы сделать вопрос более понятным. – Terco
Не обеспечивает ли MVVM Light систему обмена сообщениями? – Aybe