2017-07-13 12 views
0

私は2つのクラスを持っています。別のクラスのプロパティが変更されたときに、プロパティを変更する方法を教えてください。 ActualReadingプロパティが変更された場合、2番目のクラスでプロパティの変更をどのようにすることができますか?別のクラスのプロパティが変更されたときにプロパティを変更する方法は? c#

クラス1

public class actualmeterreading : INotifyPropertyChanged 
{ 
    private string _ID; 

    private Int32 _ActualReading; 

    public actualmeterreading() 
    { 
     this._ID = string.Empty; 

     this._ActualReading = 0; 
    } 

    public string ID 
    { 
     get 
     { 
      return _ID; 
     } 

     set 
     { 
      _ID = value; 
     } 
    } 


    public int ActualReading 
    { 
     get 
     { 
      return _ActualReading; 
     } 

     set 
     { 
      _ActualReading = value; 
      RaisePropertyChanged("ActualReading"); 

     } 
    } 



    public event PropertyChangedEventHandler PropertyChanged; 

    private void RaisePropertyChanged(String Name) 
    { 
     if (PropertyChanged != null) 
      this.PropertyChanged(this, new PropertyChangedEventArgs(Name)); 
    } 


} 

クラス2

public class meterreadingrecords : INotifyPropertyChanged 
{ 
    private string _id; 

    private actualmeterreading _actualmeterreading; 

    public meterreadingrecords() 
    { 
     this._id = string.Empty; 

     this._actualmeterreading = new actualmeterreading(); 


    } 



    public string Id 
    { 
     get 
     { 
      return _id; 
     } 

     set 
     { 
      _id = value; 
     } 
    } 



    public actualmeterreading Actualmeterreading 
    { 
     get 
     { 
      return _actualmeterreading; 
     } 

     set 
     { 

      _actualmeterreading = value; 

     } 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 

    private void RaisePropertyChanged(String Name) 
    { 
     if (PropertyChanged != null) 
      this.PropertyChanged(this, new PropertyChangedEventArgs(Name)); 
    } 
} 
+0

質問を明確にしてください。 –

+0

クラスの**すべての**プロパティが変更されたことを確認してください。 IdとActualmeterreadingはこれまではなかったので、修正してください –

+0

WPFバインディングや何のために使用しますか?バインディング用でない場合は、悪いデザインのようです – DdarkSideE

答えて

0

あなたは、イベントをチェーンすることができます。そのためにはイベントを2番目のクラスに登録する必要があり、イベントメソッドでは2番目のクラスのRaisePropertyChangedを発火させます

public meterreadingrecords() 
{ 
    this._id = string.Empty; 

    this._actualmeterreading = new actualmeterreading(); 

    this._actualmeterreading.PropertyChanged += _actualmeterreading_PropertyChanged 


} 

private void _actualmeterreading_PropertyChanged(object sender, PropertyChangedEventArgs e) 
{ 
    RaisePropertyChanged("_actualmeterreading"); 
} 
+0

ありがとうございます。それは – batwing

+0

@batwingあなたは歓迎です –