CollectionViewSource Classe

Definizione

Fornisce un'origine dati che aggiunge il supporto di raggruppamenti e elementi correnti alle classi di raccolta.

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 .../>
Ereditarietà
Object Platform::Object IInspectable DependencyObject CollectionViewSource
Attributi

Esempio

Tip

Per altre info, indicazioni sulla progettazione ed esempi di codice, vedi Zoom semantico.

L'app Raccolta WinUI 3 include esempi interattivi della maggior parte dei controlli e delle funzionalità di WinUI 3. Ottenere l'app dal Microsoft Store o ottenere il codice sorgente in GitHub.

Nell'esempio di codice seguente viene illustrato come associare un controllo ListBox ai risultati di una query LINQ di raggruppamento. In questo esempio, una raccolta di team viene raggruppata per città e visualizzata con il nome della città come intestazioni di gruppo. Per l'elenco di codice completo, vedi l'esempio di data binding XAML.

<Grid>

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

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

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

Commenti

Utilizzare CollectionViewSource quando si desidera associare i controlli elenco alle raccolte, ma si desidera visualizzare tali raccolte in gruppi e mantenere un elemento corrente indipendente dal controllo elenco. Ciò è particolarmente utile quando si desidera associare più controlli alla stessa raccolta e si desidera che l'elemento corrente in un controllo modifichi l'elemento corrente negli altri controlli associati. In genere definisci collectionViewSource come risorsa XAML e associalo usando l'estensione di markup {StaticResource}. È quindi possibile impostare la relativa proprietà Source nel code-behind su un tipo di raccolta supportato.

Tutti i controlli associati allo stesso CollectionViewSource avranno sempre lo stesso elemento corrente. È possibile accedere all'elemento corrente a livello di codice tramite la proprietà ICollectionView.CurrentItem del valore della proprietà CollectionViewSource.View .

Se gli elementi della raccolta sono raccolte stesse o sono oggetti che contengono raccolte, è possibile visualizzare le raccolte come gruppi all'interno della raccolta più grande. A tale scopo, impostare la proprietà IsSourceGrouped su true. Se gli elementi contengono raccolte ma non sono raccolte stesse, è necessario impostare anche la proprietà ItemsPath sul nome della proprietà della raccolta.

Note

L'impostazione della proprietà Source su un'altra istanza collectionViewSource non è supportata.

Costruttori

Nome Descrizione
CollectionViewSource()

Inizializza una nuova istanza della classe CollectionViewSource .

Proprietà

Nome Descrizione
Dispatcher

Restituisce null sempre in un'app di SDK per app di Windows. Usare invece DispatcherQueue .

(Ereditato da DependencyObject)
DispatcherQueue

Ottiene l'oggetto DispatcherQueue a cui è associato questo oggetto. Rappresenta DispatcherQueue una funzionalità che può accedere al nel thread dell'interfaccia DependencyObject utente anche se il codice viene avviato da un thread non dell'interfaccia utente.

(Ereditato da DependencyObject)
IsSourceGrouped

Ottiene o imposta un valore che indica se i dati di origine sono raggruppati.

IsSourceGroupedProperty

Identifica la proprietà di dipendenza IsSourceGrouped .

ItemsPath

Ottiene o imposta il percorso della proprietà da seguire dall'elemento di primo livello per trovare i gruppi all'interno di CollectionViewSource.

ItemsPathProperty

Identifica la proprietà di dipendenza ItemsPath .

Source

Ottiene o imposta l'oggetto raccolta da cui creare questa visualizzazione.

SourceProperty

Identifica la proprietà di dipendenza Source .

View

Ottiene l'oggetto view attualmente associato a questa istanza di CollectionViewSource.

ViewProperty

Identifica la proprietà di dipendenza View .

Metodi

Nome Descrizione
ClearValue(DependencyProperty)

Cancella il valore locale di una proprietà di dipendenza.

(Ereditato da DependencyObject)
GetAnimationBaseValue(DependencyProperty)

Restituisce qualsiasi valore di base stabilito per una proprietà di dipendenza, che si applica nei casi in cui un'animazione non è attiva.

(Ereditato da DependencyObject)
GetValue(DependencyProperty)

Restituisce il valore effettivo corrente di una proprietà di dipendenza da dependencyObject.

(Ereditato da DependencyObject)
ReadLocalValue(DependencyProperty)

Restituisce il valore locale di una proprietà di dipendenza, se è impostato un valore locale.

(Ereditato da DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

Registra una funzione di notifica per l'ascolto delle modifiche a una dipendenza specifica in questa istanza dependencyObject .

(Ereditato da DependencyObject)
SetValue(DependencyProperty, Object)

Imposta il valore locale di una proprietà di dipendenza in un Oggetto DependencyObject.

(Ereditato da DependencyObject)
UnregisterPropertyChangedCallback(DependencyProperty, Int64)

Annulla una notifica di modifica registrata in precedenza chiamando RegisterPropertyChangedCallback.

(Ereditato da DependencyObject)

Si applica a

Vedi anche