我有这个自定义的可观察集合
public class ObservableLinkedList<T> : INotifyPropertyChanged, INotifyCollectionChanged, IEnumerable<T>, ICollection<T>, ICollection, IEnumerable
{
public event NotifyCollectionChangedEventHandler CollectionChanged;
public event PropertyChangedEventHandler PropertyChanged;
private LinkedList<T> _list = new LinkedList<T>();
public ObservableLinkedList()
{
}
public void Clear()
{
_list.Clear();
}
public void Add(T artist)
{
_list.AddLast(artist);
}
public Model.Artist Find(string p)
{
return null;
}
public int Count()
{
return _list.Count();
}
public IEnumerator<T> GetEnumerator()
{
return _list.GetEnumerator();
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return _list.GetEnumerator();
}
public bool Contains(T item)
{
throw new NotImplementedException();
}
public void CopyTo(T[] array, int arrayIndex)
{
throw new NotImplementedException();
}
int ICollection<T>.Count
{
get { throw new NotImplementedException(); }
}
public bool IsReadOnly
{
get { throw new NotImplementedException(); }
}
public bool Remove(T item)
{
throw new NotImplementedException();
}
public void CopyTo(Array array, int index)
{
throw new NotImplementedException();
}
int ICollection.Count
{
get { throw new NotImplementedException(); }
}
public bool IsSynchronized
{
get { throw new NotImplementedException(); }
}
public object SyncRoot
{
get { throw new NotImplementedException(); }
}
}
在某些 XAML 中绑定:
<Page.DataContext>
<viewModel:SearchViewModel/>
</Page.DataContext>
GridView 是这样的数据绑定
<GridView ItemsSource="{Binding Path=Artists}" Grid.Row="1">
我的 SearchViewModel 在哪里分发我的 ObservableLinkedList,但 UI 永远不会得到更新。可怕的是,如果我用官方的 ObservableCollection 替换我的 ObservableLinkedList,那么它就可以正常工作。
CollectionChanged 和 PropertyChanged 始终为空。我已经在 clear 方法、构造函数和 add 方法中使用断点检查了这一点。
有人可以告诉我如何正确实施吗?一定有什么办法。事实上,您甚至不必告诉我如何实现这一点,您只需向我指出一个方向,有人告诉我如何在头盔下完成绑定。或者如何从 XAML 中获取更多调试信息。
我试图消除每种方法中的所有异常抛出和中断。
谢谢,马丁插槽