2010-10-25 116 views
1

ys, 我需要幫助瞭解爲什麼不更新字段: 我有兩個派生自Observable的樣本類,它們只是實現INotifyPropertyChanged。將TextBlock綁定到複雜屬性

public class ClassA : Observable 
    { 
     string p1; 
     public string Property1 
     { 
      get { return p1; } 
      set 
      { 
       p1 = value; 
       RaisePropertyChangedEvent("Property1"); 
      } 
     } 

     ClassB p2; 
     public ClassB Property2 
     { 
      get { return p2; } 
      set 
      { 
       if (p2 != null) 
        p2.PropertyChanged -= OnProperty2Changed; 

       p2 = value; 

       if (p2 != null) 
        p2.PropertyChanged += OnProperty2Changed; 
      } 
     } 

     string p2r; 
     public string Propert2Representation 
     { 
      get { return p2r; } 
      set 
      { 
       p2r = value; 
       RaisePropertyChangedEvent("Propert2Representation"); 
      } 
     } 

     void OnProperty2Changed(object sender, System.ComponentModel.PropertyChangedEventArgs e) 
     { 
      this.RaisePropertyChangedEvent("Property2"); 
      this.Propert2Representation = Property2.ToString(); 
     } 

     public override string ToString() 
     { 
      return "Class A"; 
     } 
    } 

    public class ClassB : Observable 
    { 
     public int Property1 { get; set; } 
     public override string ToString() 
     { 
      return "Class B"; 
     } 
    } 

當我在ClassB中更改屬性時,綁定到Property2的TextBlock不會更新。但是,綁定到Property2Representation的TextBlock已更新。我究竟做錯了什麼?

TIA。

回答

0

ClassB不提出財產變更通知!

+0

對不起,我的不好,但是ClassB確實在Property1上引發了屬性更改通知。我不知何故忘了補充一點。 – 2010-10-26 01:56:50

+0

您是否將Property2綁定爲源或路徑,如果綁定爲源,那麼它將不起作用,因爲更新Property2的時刻您正在更改其引用。 – whoisthis 2010-10-26 03:49:37

+0

嘗試綁定到路徑,但沒有這樣做。與此同時,我只是簡單地創建了另一個字符串屬性,將屬性更改爲從那裏獲取更新。 – 2010-10-27 20:56:28

相關問題