Dove chiamare OnPropertyChanged

1

Con WPF e MVVM, le proprietà di ViewModel sono associate agli elementi dell'interfaccia utente. Quando una proprietà cambia, il suo set accessor chiama OnPropertyChanged che a sua volta aumenta l'evento PropertyChanged dell'interfaccia INotifyPropertyChanged .

Tuttavia è possibile chiamare OnPropertyChanged (con il nome della proprietà come argomento) da qualsiasi posizione in ViewModel (e quindi non è possibile utilizzare l'attributo CallerMemberName ).

Ora vorrei chiederti: come gestisci questi casi? Chiama OnPropertyChanged da altri posti rispetto a property_set ? O modifichi il tuo codice in modo tale che chiami property_set ? O altre idee?

    
posta Bernhard Hiller 26.07.2016 - 12:19
fonte

1 risposta

2

Come ogni altra cosa, dipende dal singolo caso. In genere, le tue proprietà semplici hanno un get e un set. Chiami il set e, a sua volta, solleva la notifica di modifica della proprietà.

Un caso comune in cui è necessario aumentare manualmente le notifiche di modifica delle proprietà è con le proprietà derivate. Questi di solito non hanno un set e possono cambiare in base alle modifiche ad altre proprietà.

Un esempio forzato:

public int ASquared => _a * _a;

public int A 
{
    get { return _a; }
    set 
    {
        if (_a == value)
            return;

        _a = value;
        RaisePropertyChanged();
        RaisePropertyChanged(nameof(ASquared));
    }
}
private int _a;
    
risposta data 26.07.2016 - 15:40
fonte

Leggi altre domande sui tag