【发布时间】:2013-09-03 07:02:15
【问题描述】:
我有一个如下所示的自定义列表:
public class MyCollection : ICollection<Model>,
ISupportIncrementalLoading,
INotifyCollectionChanged,
INotifyPropertyChanged
每当我想查看要更新时,它都会引发CollectionChanged 事件,例如:
public void Clear()
{
InternalData.Clear();
if (CollectionChanged != null)
{
CollectionChanged(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));
}
}
我有一个GridView,其属性ItemsSource 绑定到我的自定义集合。然而,虽然我的自定义集合中有数据(并且由于我的自定义IEnumerator<Model> GetEnumerator(),我可以使用动态视图字段浏览这些数据),但事件CollectionChanged 永远不会触发,因为它始终是null。就像GridView 没有订阅该事件。我不知道我能做些什么来强制 GridView 监听这个事件。
我在 pastebin 上放了一个工作示例:http://pastebin.com/01zS6yjP
当 GridView 绑定到集合时,CollectionChanged 事件始终为 null 事件。
【问题讨论】:
-
大多数情况下将
GridView与ListView结合使用。例如,请参阅msdn.microsoft.com/en-us/library/ms752213(v=vs.100).aspx。 -
您是否尝试过让您的自定义集合扩展
ObservableCollection?或者用ObservableCollection测试同一个实例?另外,尝试在GridView绑定到的属性上提高PropertyChanged(通常是“Items[]”)。
标签: c# xaml gridview mvvm windows-runtime