我只是在寻找到的BindingList和的ObservableCollection的区别如下这个问题: 为什么不能在的BindingList WPF
作为其中的一部分,我测试了一个ItemsControl的的ItemsSource绑定到不同类型,包括列表,收藏的ObservableCollection和的BindingList。
让我吃惊的是,当任何一个的ObservableCollection或的BindingList进行了修改界面更新,但不是在其他人。 那么,什么是WPF听取了导致更新? 它不可能是INotifyCollectionChanged事件,因为我以前认为,因为的BindingList没有实现这一点。 困惑的。
绑定列表如下:
public class BindingList<T> : Collection<T>, IBindingList, IList, ICollection, IEnumerable, ICancelAddNew, IRaiseItemChangedEvents
{
IRaiseItemChangedEvents表示该对象类转换属性更改事件的ListChanged事件。 BindingList
本身具有ListChanged
事件是什么WPF必须听。
如果事实上,它看起来像IRaiseItemChangedEvents被忽略,但有一个BindingListCollectionView
包含
// subscribe to change notifications
private void SubscribeToChanges ()
{
if (InternalList.SupportsChangeNotification)
{
InternalList.ListChanged += new ListChangedEventHandler(OnListChanged);
}
}
和构造函数一样
/// <summary>
/// Constructor
/// </summary>
/// <param name="list">Underlying IBindingList</param>
public BindingListCollectionView(IBindingList list)
: base(list)
{
InternalList = list;
我建议你弄个DotPeek ,看看自己。