我有3个文本框,第一个是持续时间,SEcond是金额,第三个是总数,只是持续时间*金额。我正在尝试使用OnPropertyChange的NotifyOfPropertyChange INSTEAD来实现它。我想知道我是否可以帮助解决为什么它没有更新。
public int? SebDuration
{
get
{
return _seb.SEBDuration;
}
set
{
_seb.SEBDuration = value;
NotifyOfPropertyChange("SebDuration");
NotifyOfPropertyChange("SebTotal");
}
}
public decimal? SebAmountPer
{
get
{
return _seb.SEBAmountPer;
}
set
{
_seb.SEBAmountPer = value;
NotifyOfPropertyChange("SebAmountPer");
NotifyOfPropertyChange("SebTotal");
}
}
public decimal? SebTotal
{
get
{
if (_seb.SEBTotal.HasValue)
{
return _seb.SEBTotal;
}
if (SebAmountPer.HasValue && SebDuration.HasValue)
{
return SebAmountPer.Value * SebDuration.Value;
}
return null;
}
set
{
if (_seb.SEBTotal != value)
{
_seb.SEBTotal = value;
NotifyOfPropertyChange("SebTotal");
}
}
}
如果我用OnPropertyChanged替换每个NotifyOfPropertyChange,它将起作用。
答案 0 :(得分:0)
NotifyOfPropertyChanged
(一个校准微观概念)期望一个lambda表达式返回要通知的属性。然后它使用反射来获取实际的字符串。你真的想这样称呼它:
NotifyOfPropertyChange(() => SebTotal);
您可能编译的代码因为框架只需要object
(String
是),但在反射部分失败(显然)。