我有以下课程:
public class Numbers :INotifyPropertyChanged
{
private double _Max;
public double Max
{
get
{
return this._Max;
}
set
{
if (value >= _Min)
{
this._Max = value;
this.NotifyPropertyChanged("Max");
}
}
}
private double _Min;
public double Min
{
get
{
return this._Min;
}
set
{
if (value <= Max)
{
this._Min = value;
this.NotifyPropertyChanged("Min");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(String info)
{
if (this.PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
问题:我不想让用户输入小于最小值的最大值,依此类推。但是当其他类在min / max值的默认值为零时尝试设置最小值/最大值时,上面的代码第一次不起作用。 因为默认情况下,最小值和最大值将为零,如果设置了最小值> 0在逻辑上是正确的,但不允许约束。 我想我需要使用依赖属性或强制来解决这个问题。任何人都可以指导这样做吗?
答案 0 :(得分:2)
将_Max初始化为Double.MaxValue,_Min初始化为Double.MinValue。
答案 1 :(得分:1)
你可以用Nullable支持它,所以它变成了这个:
public class Numbers : INotifyPropertyChanged
{
private double? _Max;
public double Max
{
get
{
return _Max ?? 0;
}
set
{
if (value >= _Min || !_Max.HasValue)
{
this._Max = value;
this.NotifyPropertyChanged("Max");
}
}
}
private double? _Min;
public double Min
{
get
{
return this._Min ?? 0;
}
set
{
if (value <= Max || !_Min.HasValue)
{
this._Min = value;
this.NotifyPropertyChanged("Min");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(String info)
{
if (this.PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
答案 2 :(得分:0)
我不知道我是否理解正确,但您可以private bool
指示该值是否第一次设置,从而覆盖支票。
private bool _FirstTimeSet = false;
private double _Max;
public double Max
{
get
{
return this._Max;
}
set
{
if (value >= _Min || _FirstTimeSet == false)
{
this._FirstTimeSet = true;
this._Max = value;
this.NotifyPropertyChanged("Max");
}
}
}