假设在C#WPF类中我有这样的东西:
class test: INotifyPropertyChanged
{
private datetime _DOB
public datetime DOB
{
get
{
return _DOB;
}
set
{
if (_DOB != value)
{
_DOB = value;
RaisePropertyChanged();
}
}
}
private int _age
public int Age
{
get
{
return _age;
}
set
{
if (_age != value)
{
_age = value;
RaisePropertyChanged();
}
}
}
....
}
现在,让我们假设用户可以放入任何属性。他们可以输入他们的DOB或他们的年龄,因此使其中一个计算属性不起作用。
除了在DOB的setter中使用像UpdateAge()
这样的方法,在Age的setter中使用UpdateDOB()
之外,还有其他任何方法可以自动更新“依赖”属性以及依赖属性( INPC负责哪个?)
答案 0 :(得分:1)
有没有其他方法可以自动更新“依赖”属性以及依赖属性(INPC负责)?
这里没有“自动”或魔法。您需要设置支持字段并为要在视图中刷新的数据绑定属性引发PropertyChanged事件。
请确保您不会在无限循环中结束,您可以在Age
属性中设置DOB
属性,反之亦然。
您可以在age
属性的setter中设置_ DOB
支持字段,反之亦然,例如:
private DateTime _DOB;
public DateTime DOB
{
get
{
return _DOB;
}
set
{
if (_DOB != value)
{
_DOB = value;
RaisePropertyChanged();
_age = DateTime.Now.Year - _DOB.Year;
RaisePropertyChanged("Age");
}
}
}