0

请考虑以下代码

    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)。我应该怎么做?请指教。

4

2 回答 2

3

最简单的方法就是在 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, ... */ ;
}
于 2013-01-30T05:41:29.927 回答
0

您可以使用EventAggregator。样品在这里

否则,您必须制作自己的 pub sub 机制。

于 2013-01-30T05:41:05.933 回答