在这个网站上有类似的问题,但我没有找到真正有效的答案,所以我再次发布.
public MyClass
{
public person Person1 {get; set;}
public person Person2 {get; set;}
CalculatedProperty
{
get
{ return Person1.Salary + (Person2.Salary/2) ; }
}
}
public class Person
{
public double Salary
{ get; set;}
}
Run Code Online (Sandbox Code Playgroud)
我希望能够在CalculatedProperty任何时候Person1.Salary和/或Person2.Salary更改时通知更改.
我曾尝试添加OnPropertyChanged("CalculatedProperty")上的制定者Person1和Person2,但它不工作(我明白为什么),但无法找到一个方法来更改通知.请帮忙=)
(有没有办法使用ObjectDataProvider它?...一直在尝试...)
您也需要Person实现INotifyPropertyChanged,然后注册到您拥有的两个属性.在其中任何一个上PropertyChanged调用一次Salary,调用PropertyChangedonCalculatedProperty
void PersonPropertyChanged(object sender, PropertyChangedEventArgs e)
{
if(e.PropertyName == "Salary")
OnPropertyChanged("CalculatedProperty");
}
Run Code Online (Sandbox Code Playgroud)
只要记得在人员被更改时取消注册.
更新:
正如吉姆所说,你的二传手应该是这样的:
private Person _person;
public Person Person
{
get { return _person; }
set
{
if (Equals(value, _person)) return;
if (_person != null)
_person.PropertyChanged -= PersonPropertyChanged;
_person = value;
if(_person != null)
_person.PropertyChanged += PersonPropertyChanged;
OnPropertyChanged("Person");
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1054 次 |
| 最近记录: |