0

次のコードを検討してください

    class VMContainer:INotifyPropertyChanged
    {
    Type t;
    VMContained contained;

    public Type T
    {
        get
          {
               return this.t;
          }
        set
          {
               this.t = value;
               this.OnPropertyChanged("T");
          }
    }
    ........
    ........
    ........

    }

VMContainer と VMContained は、2 つの ViewModel クラスです。ここで、Container クラスのプロパティ T が変更されるたびに、"contained" メンバー インスタンスの 1 つのプロパティ (P1 など) を変更する必要があります。お知らせ下さい。

4

2 に答える 2

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, ... */ ;
}
于 2013-01-30T05:41:29.927 に答える
0

EventAggregatorを使用できます。サンプルはこちら

それ以外の場合は、独自の pub サブ メカニズムを作成する必要があります。

于 2013-01-30T05:41:05.933 に答える