2016-09-30 1 views
0

Как я могу активировать, если элементы в PersonList изменены с помощью ObservesProperty?Prism ObservesProperty внутри ObservableCollection

public ICommand Save 
{ 
    get 
    { 
     return _save ?? (_save = 
      new DelegateCommand(saveData,calculate).ObservesProperty(()=> PersonList)); 
    } 
} 

public ObservableCollection<Person> PersonList 
{ 
    get 
    { 
     return _personList ?? (_personList = new ObservableCollection<Person>()); 
    } 
    set 
    { 
     SetProperty(ref _personList , value); 
    } 
} 
+0

Почему вы хотите? Я попытаюсь спросить источник ваших лиц, был ли один из них изменен с момента последнего сохранения. В противном случае вы можете сделать это с трудом, наблюдать за наблюдаемой коллекцией и наблюдать за всеми ее элементами и поддерживать флаг «необходимость в сохранении» для каждого из них, все вручную используя обработчики для «CollectionChanged» и «PropertyChanged» ... – Haukinger

ответ

0

Вы не можете. Метод DelegateCommand.ObservesProperty учитывает только свойства уровня ViewModel для уведомлений об изменениях. Если вы хотите отвечать на каждый отдельный элемент в списке, вам нужно подключить INPC этих дочерних элементов. Посмотрите этот SO вопрос для некоторых подходов

ObservableCollection not noticing when Item in it changes (even with INotifyPropertyChanged)

Смежные вопросы