2017-05-25 34 views
0

我想知道,哪些類和/或接口可以分配給WPF Collection​View​Source.​Source Property。幫助文檔不解釋任何東西:WPF:什麼可以作爲源收集查看源

public object Source { get; set; } 

沒有解釋,也沒有代碼樣本,因爲Sourceobject型的,什麼都可以分配。我猜Source支持各種接口作爲來源,但哪些?

我知道,例如它可以與List<>一起工作,它實現了許多接口。我猜他們最基本的是IEnumerable<T>Source是否接受實現IEnumerable<T>的任何內容,並且Sourceobject類型的原因是因爲它也必須支持IEnumerable?它還支持什麼?如果還實施了更高的接口IList<>,是否有利?

爲大家誰根本無法抵擋標記了一個問題,重複:

這是相當令人沮喪,如果你標記了一個問題,重複和防止任何進一步的答案,只是因爲你已經看到某處的答案分配東西到Collection​View​Source.Source。其中有很多。但請注意,這個問題並不只是一個例子,但我想知道可以分配的所有內容。

回答

3

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無效源。

+0

...和'!(o是ICollectionView)'是必要的,因爲['ICollectionView'是'IEnumerable'](https://msdn.microsoft.com/zh-cn/library/system.componentmodel.icollectionview( v = vs.110)的.aspx)。優秀的答案。 –

+0

可悲的是我試圖檢查自己的引用來源,但無法找到類集合查看源,所以我猜WPF不在那裏。我想知道爲什麼有人-1我的問題。有人可以+1嗎? –

相關問題