dans .NET (et WPF), j'ai besoin de surveiller les changements sur un objet Timespan
qui n'inclut aucun événement de changement comme PropertyChanged
. Quel serait le meilleur moyen d'ajouter cette fonctionnalité?Comment mieux implémenter IPropertyChanged sur le sous-type Timespan?
1
A
Répondre
4
En supposant que vous exposez la Timespan
comme une propriété d'une classe, vous pouvez mettre en œuvre INotifyPropertyChanged
comme ceci:
public class MyClass : INotifyPropertyChanged
{
private Timespan _timespan;
public event PropertyChangedEventHandler PropertyChanged;
public Timespan Timespan
{
get { return _timespan; }
set
{
Timespan oldValue = _timespan;
_timespan = value;
if(oldValue != value)
OnPropertyChanged("Timespan");
}
}
protected void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler @event = PropertyChanged;
if(@event != null)
@event(
this,
new PropertyChangedEventArgs(propertyName ?? string.Empty)
);
}
}
Toute cession d'une valeur modifiée à la propriété Timespan
soulèvera l'événement attendu.
J'ai mentionné le sous-typage, mais en réalité Timespan est la structure. – 742