CollectionViewSource Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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à
- 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 |
| DispatcherQueue |
Ottiene l'oggetto |
| 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) |