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