Как следить за содержимым этикетки?

У меня есть 3 поля в моем окне TimeEntry:

  • Время начала
  • Время окончания
  • Продолжительность (двойной - часов)

Все элементы управления имеют привязку к одному объекту.

Я реализовал System.ComponentModel.INotifyPropertyChanged в классе модели, и я уже обновил содержимое в метке с изменениями во время начала или окончания, но...

Я должен наблюдать за изменениями в модификациях блоков, которые создают длину ниже 0.

Как мне это сделать?


person Marek Urbanowicz    schedule 10.11.2012    source источник
comment
Просто чтобы убедиться. Вы хотите выполнить какой-то метод, когда текст в метке изменится?   -  person Daniel Castro    schedule 11.11.2012


Ответы (1)


Вы можете реализовать эту логику в своем классе модели

public class MyModel : INotifyPropertyChanged
{
  ...
    public DateTime StartTime
    {
        get { return _startTime; }
        set 
        {
             if ((EndTime - value).TotalMinutes >= 0) // only allow changes if it doesn't result in < 0 timespan.
             {
                 _startTime = value;
                 OnPropertyChanged("StartTime", "Length");
             }
        }
    }

    public DateTime EndTime
    {
        get { return _endTime; }
        set 
        {
             if ((value - StartTime).TotalMinutes >= 0) 
             {
                 _endTime = value;
                 OnPropertyChanged("EndTime", "Length");
             }
        }
    }

    public double Length
    {
         get { return (EndTime - StartTime).TotalMinutes / 60.0; }           
    }
  ...
}
person Jeff    schedule 10.11.2012