C#/WPF: PropertyChanged для всех Свойств в ViewModel?

Вы можете использовать публичный наблюдаемый список для хранения общедоступных данных или просто создать общедоступный метод настройки для хранения данных и получения из соответствующего контроллера

54
задан Joseph jun. Melettukunnel 7 December 2009 в 13:21
поделиться

2 ответа

Вы можете указать, что все свойства были изменены, используя null или string.Empty для имени свойства в PropertyChangedEventArgs . Это упоминается в документации для PropertyChanged .

103
ответ дан 7 November 2019 в 07:57
поделиться

Еще одно решение я раньше занимался проблемой: сначала устанавливание значения и затем вызов эти PropertyChangedEventArgs путем добавления Set функция в моем ViewModelBase, который похож на это:

public class ViewModelBase : INotifyPropertyChanged
{
    protected bool Set<T>(ref T backingField, T value, [CallerMemberName] string propertyname = null)
    {
        // Check if the value and backing field are actualy different
        if (EqualityComparer<T>.Default.Equals(backingField, value))
        {
            return false;
        }

        // Setting the backing field and the RaisePropertyChanged
        backingField = value;
        RaisePropertyChanged(propertyname);
        return true;
   }
}

Вместо того, чтобы делать это:

public string Name { 
    get { return PersonEntity.Name; }
    set { PersonEntity.Name = value; RaisePropertyChanged("Name");
} 

можно теперь достигнуть того же путем выполнения этого:

public string Name { 
    get { return PersonEntity.Name; }
    set { Set(ref PersonEntity.Name,value);
} 
0
ответ дан 7 November 2019 в 07:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: