如何解决更改收藏内容的问题?
一种方法是清除集合并使用foreach循环添加新内容。集合必须在运行时更改,因为有时我会添加50万个元素,这需要很长时间,而且我无法接受。
试试时
_myObservableCollection = new ObservableCollection<T>(_anotherCollection);
绑定到视图已被破坏(引用旧集合)
有可能解决这个问题吗?
答案 0 :(得分:2)
如果在分配新集合后破坏了对视图的绑定,则应正确实现集合属性的INotifyPropertyChanged
。
编辑:示例
// implement the interface on your viewmodel
public class ExampleViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
private ObservableCollection<UIElement> collectionBackingField;
public ObservableCollection<UIElement> Collection
{
get { return collectionBackingField; }
set
{
if(value != collectionBackingField)
{
collectionBackingField = value;
// call the method that notifies all observers of the changes
NotifyPropertyChanged();
}
}
}
}
请注意,现在,用户界面需要知道的有关的所有更改必须通过该属性。不从代码中的任何位置手动设置私人支持字段。