请考虑以下代码
class VMContainer:INotifyPropertyChanged
{
Type t;
VMContained contained;
public Type T
{
get
{
return this.t;
}
set
{
this.t = value;
this.OnPropertyChanged("T");
}
}
........
........
........
}
VMContainer和VMContained是两个ViewModel类。 现在,只要Container类属性T发生变化,我就需要更改成员实例“包含”的一个属性(比方说,P1)。我该怎么做? 请指教。
答案 0 :(得分:3)
最简单的方法就是在T
:
public Type T
{
get
{
return this.t;
}
set
{
this.t = value;
contained.P1 = CalculateContainedValue();
this.onPropertyChanged("T");
}
}
<强>更新强>
public Type T1
{
get
{
return this.t1;
}
set
{
this.t1 = value;
contained.P1 = CalculateContainedValue();
this.OnPropertyChanged("T1");
}
}
public Type T2
{
get
{
return this.t2;
}
set
{
this.t2 = value;
contained.P1 = CalculateContainedValue();
this.OnPropertyChanged("T2");
}
}
private Type CalculateContainedValue()
{
return /* Some combination of T1, T2, ... */ ;
}
答案 1 :(得分:0)
您可以使用EventAggregator。样本为here。
否则你必须制作自己的发布子机制。