想象一下以下內容:WPF - 刷新的集合(與「新」)沒有重新綁定控件
class Repository
{
private ObservableCollection<ModelClass> _allEntries;
public ObservableCollection<ModelClass> AllEntries
{
get { return _allEntries; }
set { _allEntries = value; }
}
public void RefreshDataFromDB()
{
_all = new ObservableCollection(GetMyData()); // whatever method there is
}
}
現在有綁定到該集合一對夫婦的控制,如:
<ListView ItemsSource="{Binding Repository.AllEntries, ElementName=Whatever}"/>
現在的問題是,如果我調用RefreshDataFromDB
綁定會丟失(至少看起來如此),因爲_all現在指向新的內存部分,並且綁定仍然使用舊的引用。在這種情況下,INotifyPropertyChanged
不能幫助我(例如,將它放在RefreshDataFromDB
中並沒有太大幫助)。
問題將是 - 你將如何處理一個案例,你代表一個集合,並希望更新其消費者的綁定?
我認爲日ere是一些錯字錯誤,你的屬性名稱是AllEntries,而你綁定到ALL! – akjoshi 2010-07-05 07:21:06
你究竟是什麼意思: 「綁定丟失(至少看起來是這樣)」 你能否提供一些更多的細節。 – akjoshi 2010-07-05 07:22:20
這個問題有一個簡單的解決方案,但只是澄清: 1.是的,這是一個錯字。它應該是AllEntries。 2.綁定迷路了,他們最初綁定到變量_all =>一些內存引用。當我使用'new'關鍵字時,_all引用會更改並指向內存中的另一個地址,但綁定到_all的控件仍在查看舊內存。基本上問題是如何避免使用舊地址的控制。而已。 (.Clear()+ .AddRange())的簡單解決方案幫助我的案例。 – Jefim 2010-07-05 07:41:27