嗯,我有些困惑。
如果我的控件有一个依赖属性ItemsSource
,类型为IEnumerable
,用户将集合绑定到它,那么在DependencyPropertyChangedEventArgs.NewValue
中有什么对象?
据我所知,WPF会为集合隐式创建CollectionView
,并期望args.NewValue
的类型是ICollectionView
。
来自这篇博客:
当用户将WPF属性绑定到数据集合时,WPF会自动创建一个视图来包装该集合,并将属性绑定到该视图,而不是原始集合。这种行为始终发生,并且与CollectionViewSource无关。
但是调试器(VS 2012, .net v.4.0)向我显示,我收到了原始的集合,而不是NewValue
中的CollectionView
。(BindsDirectlyToSource未设置,默认值为false)
这怎么可能?!
我无法理解在这种情况下WPF控件如何支持排序、分组和过滤。
CollectionView是如何注入和使用的?