WPF Informer PropertyChanged pour Obtenir la Propriété

J'ai le INotifyPropertyChanged mis en œuvre à l'aide de CallerMemberName

public event PropertyChangedEventHandler PropertyChanged;

protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
 if (PropertyChanged != null)
    {
        PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
    }
}

Ce qui pourrait être appelé dans le setter de la propriété en tant que - OnPropertyChanged() qui serait en aviser propriété a changé de cas chaque fois que c'est réglé. Ce n'est pas le cas pour une propriété d'une lecture seulement. Par exemple,

private DateTime _dob;
public DateTime DateOfBirth
{
    get
    {
        return _dob;
    }
    private set
    {
        _dob = value;
        OnPropertyChanged();
        OnPropertyChanged("Age");
    }
}

public int Age
{
    get
    {
        return DateTime.Today.Year - _dob.Year;
    }
}

OnPropertyChanged() fonctionne très bien pour DateOfBirth, mais à en informer l'Âge changé, je dois me rappeler d'appeler OnPropertyChanged("Age") au sein de l'incubateur de DateOfBirth. Je pense que ça rend le code difficile à maintenir dans le temps. Si une nouvelle propriété dépend de l'Âge, qui doit aussi être Notifié dans le setter de DateOfBirth. Est-il une meilleure façon de le faire sans faire appel OnPropertyChanged("Age")?

Est-ce à OnPropertyChanged() ne fonctionne que sur setter? Si non, vous pouvez essayer de mettre le return déclaration dans un try-finally, et d'appeler la OnPropertyChanged().
Pourriez-vous donner des précisions. OnPropertyChanged fonctionne toujours, mais il doit être averti quand quelqu'un change la valeur. Il est donc logique d'avoir dans setter. Je ne comprends pas d'où et pourquoi j'aurai besoin d'un try-finally?
Si vous ne souhaitez pas appeler OnPropertyChanged("Age"), avec "l'Âge" comme paramètre lorsque vous définissez la date de naissance de valeur, sur le Age's get vous pouviez retourner de la valeur à l'intérieur d'un try, et à l'intérieur de la finally, vous pourriez appeler la OnPropertyChanged(), sans le paramètre.
Cela ne fonctionnera pas. La raison pour laquelle je suis à l'aide de OnPropertyChanged est, si quelqu'un change la date de naissance, OnPropertyChanged sera le déclencheur de l'INTERFACE utilisateur pour accéder à Obtenir de l'Âge. Si je déplace OnpropertyChanged au sein d'Obtenir de l'Âge, il va aller dans une boucle infinie de nouveau et de nouveau essayer d'obtenir l'accès et obtenir un changement de la notification.
Guilherme commentaires de n'avoir aucun sens. Propriété de notification doit évidemment être fait lors de la configuration, de ne pas arriver, et try/finally ne réalise rien (autre que le feu de l'événement, même quand il y a une exception dans la lecture, ce qui est tout à fait étrange).

OriginalL'auteur Carbine | 2014-02-14