我想知道,哪些类和/或接口可以分配给WPF CollectionViewSource.Source Property
。帮助文档没有解释任何内容:
public object Source { get; set; }
没有解释也没有代码示例,因为Source
的类型为object
,所以可以分配任何内容。我想Source
支持各种接口作为源,但是哪些接口?
我知道例如它适用于List<>
,它实现了许多接口。我想其中最基本的是IEnumerable<T>
。 Source
是否接受任何实施IEnumerable<T>
的内容以及Source
类型为object
的原因是因为它还必须支持IEnumerable
?还有什么支持?如果还实现了像IList<>
这样的更高级别的界面吗?
对于那些无法抗拒将问题标记为重复的人:
如果您将问题标记为重复并阻止任何进一步的答案,那将是非常令人沮丧的,因为您已经在某处找到了为CollectionViewSource.Source
分配内容的答案。他们中有很多人。但请注意,这个问题并不只是一个例子,但我想知道可以分配的所有内容。
答案 0 :(得分:4)
public static readonly DependencyProperty SourceProperty
= DependencyProperty.Register(
"Source",
typeof(object),
typeof(CollectionViewSource),
new FrameworkPropertyMetadata(
(object)null,
new PropertyChangedCallback(OnSourceChanged)),
new ValidateValueCallback(IsSourceValid));
让我们看看IsSourceValid是如何实现的:
private static bool IsSourceValid(object o)
{
return (o == null ||
o is IEnumerable ||
o is IListSource ||
o is DataSourceProvider) &&
!(o is ICollectionView);
}
因此,有效类型是:
ICollectionView无效来源。