【发布时间】:2014-08-15 13:40:58
【问题描述】:
假设我有这个模型:
public sealed class Model : ModelBase // base is a INotifyPropertyChanged implementation
{
private void SomeAction()
{
Console.WriteLine("SomeAction!");
}
protected override void OnPropertyChanged(string propertyName)
{
base.OnPropertyChanged(propertyName);
switch (propertyName)
{
case "A":
B = A + 1;
SomeAction();
break;
case "B":
SomeAction();
break;
}
}
public int A
{
get { return a; }
set
{
if (a != value)
{
a = value;
OnPropertyChanged("A");
}
}
}
private int a;
public int B
{
get { return b; }
set
{
if (b != value)
{
b = value;
OnPropertyChanged("B");
}
}
}
private int b;
}
这里有两个属性:A 和 B。 B 取决于 A - 当 A 的值发生变化时,B 也必须更改。无论如何,当这些属性中的任何一个发生变化时,都应该执行SomeAction。
显然,当A 更改时,我想避免两次调用SomeAction。
有什么优雅的方式来做到这一点(某种布尔标志不是优雅的方式)?
UPD。
我应该提到,我可能正在寻找比以下答案中提供的更通用的解决方案。原因是当属性数量增加时,代码复杂度增长得更快。例如,这些图 - D C A -> B - 将导致代码不易维护。
【问题讨论】:
标签: c# .net inotifypropertychanged