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.
Извините, мой плохой, но ClassB действительно увеличивает уведомление об изменении свойства на свой Property1. Я как-то забыл добавить это. –
Связали ли вы свойство2 как источник или путь, если он связан как источник, тогда он не будет работать, поскольку в момент, когда вы обновляете Property2, вы меняете его ссылку. – whoisthis
Пробовал привязку к пути, но этого не делал. В то же время я просто создал другое свойство строки, которое повышает свойство, измененное для получения обновлений оттуда. –