WPF:什么可以用作 Collection View Source 的源

WPF: What can be used as Source for Collection​View​Source

我想知道,哪些 类 and/or 接口可以分配给 WPF Collection​View​Source.​Source Property。帮助文档没有解释任何内容:

public object Source { get; set; }

没有解释,也没有代码示例,因为 Sourceobject 类型,任何东西都可以赋值。我想 Source 支持各种接口作为源,但是哪些接口?

例如,我知道它与实现多个接口的 List<> 一起使用。我想其中最基本的是 IEnumerable<T>Source 是否接受任何实现 IEnumerable<T> 的东西, Source 属于 object 类型的原因是因为它还必须支持 IEnumerable ?它还支持什么?如果还实现了像 IList<> 这样的更高接口,它会利用吗?

致所有忍不住将问题标记为重复的人:

如果您将一个问题标记为重复并阻止任何进一步的答案,这将是非常令人沮丧的,只是因为您在某处看到一个答案将某些内容分配给 Collection​View​Source.Source。他们有很多。但是请注意,这个问题不是只问一个例子,而是我想知道所有可以赋值的东西。

来自Reference Source

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);
}

因此,有效类型是:

  • IEnumerable
  • IListSource
  • DataSourceProvider

ICollectionView 无效 来源。