【发布时间】:2010-12-24 16:51:33
【问题描述】:
我需要实现一个具有特殊功能的集合。另外,我想把这个集合绑定到一个ListView上,所以我最终得到了下一个代码(我在论坛中省略了一些使它更短的方法):
public class myCollection<T> : INotifyCollectionChanged
{
private Collection<T> collection = new Collection<T>();
public event NotifyCollectionChangedEventHandler CollectionChanged;
public void Add(T item)
{
collection.Insert(collection.Count, item);
OnCollectionChange(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, item));
}
protected virtual void OnCollectionChange(NotifyCollectionChangedEventArgs e)
{
if (CollectionChanged != null)
CollectionChanged(this, e);
}
}
我想用一个简单的数据类来测试它:
public class Person
{
public string GivenName { get; set; }
public string SurName { get; set; }
}
所以我创建了一个 myCollection 类的实例,如下所示:
myCollection<Person> _PersonCollection = new myCollection<Person>();
public myCollection<Person> PersonCollection
{ get { return _PersonCollection; } }
问题是虽然我实现了 INotifyCollectionChanged 接口,但集合更新时 ListView 没有更新。
我知道我的绑定很好(在 XAML 中),因为当我像这样使用 ObservableCollecion 类而不是 myCollecion 类时:
ObservableCollection<Person> _PersonCollection = new ObservableCollection<Person>();
public ObservableCollection<Person> PersonCollection
{ get { return _PersonCollection; } }
ListView 更新
有什么问题?
【问题讨论】:
标签: wpf data-binding observablecollection inotifycollectionchanged