2010-10-25 3 views
1

ys, Мне нужна помощь в понимании, почему поле не обновляется: У меня есть два класса класса, оба из которых наблюдаются, что просто реализует 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, привязка TextBlock к Property2 не обновляется. Тем не менее, TextBlock, связанный с Property2Representation, обновляется. Что я делаю не так?

TIA.

ответ

0

ClassB не несет ответственности за изменение!

+0

Извините, мой плохой, но ClassB действительно увеличивает уведомление об изменении свойства на свой Property1. Я как-то забыл добавить это. –

+0

Связали ли вы свойство2 как источник или путь, если он связан как источник, тогда он не будет работать, поскольку в момент, когда вы обновляете Property2, вы меняете его ссылку. – whoisthis

+0

Пробовал привязку к пути, но этого не делал. В то же время я просто создал другое свойство строки, которое повышает свойство, измененное для получения обновлений оттуда. –

Смежные вопросы