への更新は、イベントObservableCollection
にフックすることによって処理されるため、新しいオブジェクトを作成しても、オブザーバーは古いコレクションを見ています。CollectionChanged
ObservableCollection
2 つの簡単な提案はINotifyPropertyChanged
、 を含むクラスに実装し、コレクション プロパティのセッターでイベントを発生さObservableCollection
せることPropertyChanged
です (それが独自のコードである場合は、まずオブザーバーで古いものからフックを解除することを忘れないでください)。
private ObservableCollection<string> _myCollection = new ObservableCollection<string>();
public ObservableCollection<string> MyCollection
{
get { return _myCollection; }
set
{
if(_myCollection == value)
return;
_myCollection = value;
RaisePropertyChanged("MyCollection");
}
}
次に、私が一般的に好むオプションは、コレクションが到着したときに新しいデータをクリアして再入力することです。
public void HandleCollectionData(IEnumerable<string> incomingData)
{
MyCollection.Clear();
foreach(var item in incomingData)
{
MyCollection.Add(item);
}
}