如何在容器视图模型和包含的视图模型之间执行通信
本文关键字:视图 模型 之间 执行 通信 包含 | 更新日期: 2023-09-27 17:56:41
请考虑以下代码
class VMContainer:INotifyPropertyChanged
{
Type t;
VMContained contained;
public Type T
{
get
{
return this.t;
}
set
{
this.t = value;
this.OnPropertyChanged("T");
}
}
........
........
........
}
VMContainer 和 VMContained 是两个 ViewModel 类。现在,每当容器类属性 T 更改时,我需要更改成员实例的一个属性(例如 P1)。我应该怎么做?请指教。
最简单的方法是在setter中为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, ... */ ;
}
您可以使用 EventAggregator。样品在这里。
否则,您必须制作自己的pub子机制。