如何观察标签内容?

时间:2012-11-10 20:18:45

标签: c# wpf binding label contentobserver

我的TimeEntry窗口中有3个字段:

  • 开始时间
  • 结束时间
  • 长度(双小时)

所有控件都绑定到一个对象。

我在模型类中实现了System.ComponentModel.INotifyPropertyChanged, 我已经更新了标签中的内容,包括开始或结束时间的变化,但是..

我必须观察阻止修改的更改,这将导致长度低于0。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您可以在模型类中实现此逻辑

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