Condividi tramite


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

Suggerimento

Per altre informazioni, indicazioni sulla progettazione ed esempi di codice, vedere Zoom semantico.

L'app WinUI 3 Gallery include esempi interattivi della maggior parte dei controlli, delle funzionalità e delle funzionalità winUI 3. Ottenere l'app da 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 in base alla città e visualizzata con il nome della città come intestazioni di gruppo. Per l'elenco di codice completo, vedere 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}}">

    <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

Usare 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 vuole che l'elemento corrente in un controllo cambi l'elemento corrente negli altri controlli associati. In genere si definisce Un oggetto CollectionViewSource come risorsa XAML e lo si associa usando l'estensione di markup {StaticResource}. È quindi possibile impostare la proprietà Source nel code-behind su un tipo di raccolta supportato.

Tutti i controlli associati alla stessa 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 dell'insieme sono raccolte o sono oggetti contenenti 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, è necessario impostare anche la proprietà ItemsPath sul nome della proprietà raccolta.

Nota

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

Costruttori

CollectionViewSource()

Inizializza una nuova istanza della classe CollectionViewSource .

Proprietà

Dispatcher

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

(Ereditato da DependencyObject)
DispatcherQueue

Ottiene l'oggetto DispatcherQueue associato. Rappresenta DispatcherQueue una struttura che può accedere al thread dell'interfaccia utente anche se il codice viene avviato da un thread non dell'interfaccia DependencyObject 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 la visualizzazione.

SourceProperty

Identifica la proprietà Di dipendenza di origine .

View

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

ViewProperty

Identifica la proprietà Visualizza dipendenza.

Metodi

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 un oggetto DependencyObject.

(Ereditato da DependencyObject)
ReadLocalValue(DependencyProperty)

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

(Ereditato da DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

Registra una funzione di notifica per l'ascolto delle modifiche a un'istanza di DependencyObject specifica.

(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