我正在尝试在我的代码中执行“清除标记”。我的数据不断显示在用户界面上,我希望用户能够在代码运行时用“清除”按钮清除数据。我有第二个线程收集和更新UI线程上的数据。我试图在属性中使用一个标志,当它看到“清除标志”是真实的,以便达到预定值。当按下清除按钮时,我将“清除标志”设置为真,并清除数据,但是我的问题是知道何时完成,并在完成时将“清除标志”设置回false。在PropertyChanged事件完成后执行事件
private bool _clear;
public bool Clear
{
get
{
return _clear;
}
set
{
_clear = value;
OnPropertyChanged("Clear");
if (value)
{
OnPropertyChanged(String.Empty);
}
}
}
private int _motorRPM;
public int MotorRPM
{
get
{
return _motorRPM;
}
set
{
_motorRPM = value;
OnPropertyChanged("MotorRPM");
}
}
private int _aveRPM;
public int AveRPM
{
get
{
return _aveRPM;
}
set
{
if (Clear)
{
_aveRPM = 0;
}
else
{
_aveRPM = (_aveRPM + value)/2;
}
OnPropertyChanged("AveRPM");
}
}
private int _minRPM = Int32.MaxValue;
public int MinRPM
{
get
{
return _minRPM;
}
set
{
if (Clear)
{
_minRPM = Int32.MaxValue;
}
else
{
if (value < _minRPM)
{
_minRPM = value;
}
}
OnPropertyChanged("MinRPM");
}
}
private int _maxRPM;
public int MaxRPM
{
get
{
return _maxRPM;
}
set
{
if (Clear)
{
_maxRPM = 0;
}
else
{
if (value > _maxRPM)
{
_maxRPM = value;
}
}
OnPropertyChanged("MaxRPM");
}
}
正如你可以看到我有一个“清除”属性,当设置为true,将调用一个更新OnPropertyChanged(的String.Empty)的所有属性,每个属性休息为已知值时,“清除”是真的。
如何设置清除回假,当所有的PropertyChanged事件做了什么?
咦?做'清除=假';就像我猜你做了'clear = true'来设置它...或者你的代码缺少一些重要的部分/信息? – Niclas 2013-04-29 21:09:47
啊。对不起,误解了你:)对我来说,你有点滥用属性改变机制。为什么不使用单个命令并让它重置所有属性,并让每个属性都处理自己的PropertyChanged? – Niclas 2013-04-29 21:16:32