CollectionViewSource 類別

定義

提供資料來源,可將群組和目前專案支援新增至集合類別。

public ref class CollectionViewSource sealed : DependencyObject
/// [Windows.Foundation.Metadata.Activatable(65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class CollectionViewSource final : DependencyObject
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
class CollectionViewSource final : DependencyObject
[Windows.Foundation.Metadata.Activatable(65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class CollectionViewSource : DependencyObject
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
public sealed class CollectionViewSource : DependencyObject
Public NotInheritable Class CollectionViewSource
Inherits DependencyObject
<CollectionViewSource .../>
繼承
Object Platform::Object IInspectable DependencyObject CollectionViewSource
屬性

Windows 需求

裝置系列
Windows 10 (已於 10.0.10240.0 引進)
API contract
Windows.Foundation.UniversalApiContract (已於 v1.0 引進)

範例

提示

如需詳細資訊、設計指引和程式碼範例,請參閱 深入資料系結

如果您已安裝 WinUI 2 資源庫 應用程式,請按一下這裡 開啟應用程式,並查看使用 SemanticZoom 運作的群組範例

下列程式碼範例示範如何將 ListBox 控制項系結至群組 LINQ 查詢的結果, (一組小組會依城市分組,並以城市名稱顯示為群組標頭) 。 如需完整的程式代碼清單,請參閱 XAML 資料系結範例

<Grid>

  <Grid.Resources>
    <CollectionViewSource x:Name="groupInfoCVS" IsSourceGrouped="true"/>
  </Grid.Resources>

  <ListBox x:Name="lbGroupInfoCVS" 
    ItemsSource="{Binding Source={StaticResource groupInfoCVS}}">

    <ListBox.GroupStyle>
      <GroupStyle>
        <GroupStyle.HeaderTemplate>
          <DataTemplate>

            <TextBlock Text="{Binding Key}"/>

          </DataTemplate>
        </GroupStyle.HeaderTemplate>
      </GroupStyle>
    </ListBox.GroupStyle>

    <ListBox.ItemTemplate>
      <DataTemplate>

        <Border Background="{Binding Color}" 
          Width="200" CornerRadius="10" HorizontalAlignment="Left">

          <TextBlock Text="{Binding Name}" 
            Style="{StaticResource DescriptionTextStyle}" 
            HorizontalAlignment="Center" FontWeight="Bold"/>

        </Border>
      </DataTemplate>
    </ListBox.ItemTemplate>

  </ListBox>

</Grid>
Teams teams = new Teams();
var result = 
    from t in teams 
    group t by t.City into g 
    orderby g.Key 
    select g;
groupInfoCVS.Source = result;

如需更詳細的範例,請參閱 XAML 資料系結範例

備註

當您想要將清單控制項系結至集合時,請使用 CollectionViewSource,但您想要在群組中顯示這些集合,並維護與清單控制項無關的目前專案。 當您想要將多個控制項系結至相同的集合,而您希望某個控制項中的目前專案變更其他繫結控制項中的目前專案時,這特別有用。 您通常會將 CollectionViewSource 定義為 XAML 資源,並使用 {StaticResource} 標記延伸系結至它。 然後,您可以在程式碼後置中將其 Source 屬性設定為支援的集合類型。

系結至相同 CollectionViewSource 的任何控制項一律會有相同的目前專案。 您可以透過CollectionViewSource.View屬性值的ICollectionView.CurrentItem屬性,以程式設計方式存取目前的專案。

如果集合中的專案本身是集合,或是包含集合的物件,您可以將集合顯示為較大集合內的群組。 若要這樣做,請將 IsSourceGrouped 屬性設定為 true。 如果專案包含集合,但不是集合本身,您也必須將 ItemsPath 屬性設定為集合屬性的名稱。

注意

不支援將 Source 屬性設定為另一個 CollectionViewSource 實例。

建構函式

CollectionViewSource()

初始化 CollectionViewSource 類別的新實例。

屬性

Dispatcher

取得這個 物件相關聯的 CoreDispatcherCoreDispatcher代表可在 UI 執行緒上存取DependencyObject的功能,即使程式碼是由非 UI 執行緒起始也一樣。

(繼承來源 DependencyObject)
IsSourceGrouped

取得或設定值,這個值表示來源資料是否已分組。

IsSourceGroupedProperty

識別 IsSourceGrouped 相依性屬性。

ItemsPath

取得或設定要從最上層專案追蹤的屬性路徑,以尋找 CollectionViewSource內的群組。

ItemsPathProperty

識別 ItemsPath 相依性屬性。

Source

取得或設定用來建立此檢視的集合物件。

SourceProperty

識別 來源 相依性屬性。

View

取得目前與此 CollectionViewSource實例相關聯的檢視物件。

ViewProperty

識別 View 相依性屬性。

方法

ClearValue(DependencyProperty)

清除相依性屬性的本機值。

(繼承來源 DependencyObject)
GetAnimationBaseValue(DependencyProperty)

傳回為相依性屬性建立的任何基底值,如果動畫未使用中,則適用此屬性。

(繼承來源 DependencyObject)
GetValue(DependencyProperty)

DependencyObject傳回相依性屬性的目前有效值。

(繼承來源 DependencyObject)
ReadLocalValue(DependencyProperty)

如果已設定本機值,則傳回相依性屬性的本機值。

(繼承來源 DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

註冊通知函式,以接聽此DependencyObject實例上特定DependencyProperty的變更。

(繼承來源 DependencyObject)
SetValue(DependencyProperty, Object)

設定 DependencyObject上相依性屬性的本機值。

(繼承來源 DependencyObject)
UnregisterPropertyChangedCallback(DependencyProperty, Int64)

取消先前透過呼叫 RegisterPropertyChangedCallback註冊的變更通知。

(繼承來源 DependencyObject)

適用於

另請參閱