Freigeben über


CollectionViewSource Klasse

Definition

Stellt eine Datenquelle bereit, die Gruppierungs- und Current-Item-Unterstützung zu Sammlungsklassen hinzufügt.

public ref class CollectionViewSource sealed : DependencyObject
/// [Windows.Foundation.Metadata.Activatable(65536, "Microsoft.UI.Xaml.WinUIContract")]
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 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.Activatable(65536, "Microsoft.UI.Xaml.WinUIContract")]
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class CollectionViewSource : DependencyObject
Public NotInheritable Class CollectionViewSource
Inherits DependencyObject
<CollectionViewSource .../>
Vererbung
Object Platform::Object IInspectable DependencyObject CollectionViewSource
Attribute

Beispiele

Tipp

Weitere Informationen, Entwurfsleitfäden und Codebeispiele finden Sie unter Semantischer Zoom.

Die WinUI 3-Katalog-App umfasst interaktive Beispiele für die meisten WinUI 3-Steuerelemente, -Features und -Funktionen. Rufen Sie die App aus dem Microsoft Store oder den Quellcode auf GitHub ab.

Im folgenden Codebeispiel wird veranschaulicht, wie ein ListBox-Steuerelement an die Ergebnisse einer LINQ-Gruppierungsabfrage gebunden wird. In diesem Beispiel wird eine Sammlung von Teams nach Stadt gruppiert und mit dem Stadtnamen als Gruppenheader angezeigt. Eine vollständige Codeauflistung finden Sie im XAML-Datenbindungsbeispiel.

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

Hinweise

Verwenden Sie CollectionViewSource, wenn Sie Listensteuerelemente an Sammlungen binden möchten, diese Sammlungen jedoch in Gruppen anzeigen und ein aktuelles Element unabhängig vom Listensteuerelement verwalten möchten. Dies ist besonders nützlich, wenn Sie mehrere Steuerelemente an dieselbe Auflistung binden möchten und das aktuelle Element in einem Steuerelement das aktuelle Element in den anderen gebundenen Steuerelementen ändern soll. In der Regel definieren Sie eine CollectionViewSource als XAML-Ressource und binden sie mithilfe der {StaticResource}-Markuperweiterung an sie. Anschließend können Sie die Source-Eigenschaft im CodeBehind auf einen unterstützten Sammlungstyp festlegen.

Alle Steuerelemente, die Sie an dieselbe CollectionViewSource binden, verfügen immer über dasselbe aktuelle Element. Sie können programmgesteuert über die ICollectionView.CurrentItem-Eigenschaft des CollectionViewSource.View-Eigenschaftswerts auf das aktuelle Element zugreifen.

Wenn es sich bei den Elementen in der Auflistung um Sammlungen selbst oder um Objekte handelt, die Sammlungen enthalten, können Sie die Sammlungen als Gruppen innerhalb der größeren Auflistung anzeigen. Legen Sie hierzu die IsSourceGrouped-Eigenschaft auf true fest. Wenn die Elemente Sammlungen enthalten, aber keine Sammlungen selbst sind, müssen Sie auch die ItemsPath-Eigenschaft auf den Namen der Auflistungseigenschaft festlegen.

Hinweis

Das Festlegen der Source-Eigenschaft auf eine andere CollectionViewSource-instance wird nicht unterstützt.

Konstruktoren

CollectionViewSource()

Initialisiert eine neue instance der CollectionViewSource-Klasse.

Eigenschaften

Dispatcher

Gibt immer in einer Windows App SDK-App zurücknull. Verwenden Sie stattdessen DispatcherQueue .

(Geerbt von DependencyObject)
DispatcherQueue

Ruft den DispatcherQueue ab, dem dieses Objekt zugeordnet ist. Stellt DispatcherQueue eine Funktion dar, die auf den DependencyObject im UI-Thread zugreifen kann, auch wenn der Code von einem Nicht-UI-Thread initiiert wird.

(Geerbt von DependencyObject)
IsSourceGrouped

Ruft einen Wert ab, der angibt, ob Quelldaten gruppiert sind, oder legt diesen fest.

IsSourceGroupedProperty

Identifiziert die Abhängigkeitseigenschaft IsSourceGrouped .

ItemsPath

Ruft den Eigenschaftenpfad ab, dem das Element der obersten Ebene folgen soll, um Gruppen innerhalb der CollectionViewSource zu suchen, oder legt diesen fest.

ItemsPathProperty

Identifiziert die ItemsPath-Abhängigkeitseigenschaft .

Source

Ruft das Auflistungsobjekt ab oder legt es fest, über das diese Ansicht erstellt wird.

SourceProperty

Identifiziert die Source-Abhängigkeitseigenschaft .

View

Ruft das Ansichtsobjekt ab, das derzeit diesem instance von CollectionViewSource zugeordnet ist.

ViewProperty

Identifiziert die View-Abhängigkeitseigenschaft.

Methoden

ClearValue(DependencyProperty)

Löscht den lokalen Wert einer Abhängigkeitseigenschaft.

(Geerbt von DependencyObject)
GetAnimationBaseValue(DependencyProperty)

Gibt einen beliebigen Basiswert zurück, der für eine Abhängigkeitseigenschaft eingerichtet wurde, der in Fällen gilt, in denen eine Animation nicht aktiv ist.

(Geerbt von DependencyObject)
GetValue(DependencyProperty)

Gibt den aktuellen effektiven Wert einer Abhängigkeitseigenschaft aus einem DependencyObject zurück.

(Geerbt von DependencyObject)
ReadLocalValue(DependencyProperty)

Gibt den lokalen Wert einer Abhängigkeitseigenschaft zurück, wenn ein lokaler Wert festgelegt ist.

(Geerbt von DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

Registriert eine Benachrichtigungsfunktion zum Lauschen auf Änderungen an einer bestimmten DependencyProperty für dieses DependencyObject-instance.

(Geerbt von DependencyObject)
SetValue(DependencyProperty, Object)

Legt den lokalen Wert einer Abhängigkeitseigenschaft für ein DependencyObject fest.

(Geerbt von DependencyObject)
UnregisterPropertyChangedCallback(DependencyProperty, Int64)

Bricht eine Änderungsbenachrichtigung ab, die zuvor durch Aufrufen von RegisterPropertyChangedCallback registriert wurde.

(Geerbt von DependencyObject)

Gilt für:

Weitere Informationen