Как лучше всего реализовать IPropertyChanged подтип Timespan? - PullRequest
1 голос
/ 25 апреля 2010

в .NET (и WPF), мне нужно отслеживать изменения в Timespan объекте, который не включает в себя никаких изменений, таких как PropertyChanged. Как лучше всего добавить эту функциональность?

1 Ответ

4 голосов
/ 25 апреля 2010

Предполагая, что вы выставляете Timespan как свойство класса, вы можете реализовать INotifyPropertyChanged следующим образом:

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)
                );
    }
}

Любое присвоение измененного значения свойству Timespan вызывает ожидаемое событие.

...