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。
对不起,我的不好,但是ClassB确实在Property1上引发了属性更改通知。我不知何故忘了补充一点。 – 2010-10-26 01:56:50
您是否将Property2绑定为源或路径,如果绑定为源,那么它将不起作用,因为更新Property2的时刻您正在更改其引用。 – whoisthis 2010-10-26 03:49:37
尝试绑定到路径,但没有这样做。与此同时,我只是简单地创建了另一个字符串属性,将属性更改为从那里获取更新。 – 2010-10-27 20:56:28