CollectionViewSource Clase

Definición

Proporciona un origen de datos que agrega compatibilidad con la agrupación y el elemento actual a las clases de colección.

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 .../>
Herencia
Object Platform::Object IInspectable DependencyObject CollectionViewSource
Atributos

Ejemplos

Sugerencia

Para obtener más información, instrucciones de diseño y ejemplos de código, consulte Zoom semántico.

La aplicación WinUI 3 Gallery incluye ejemplos interactivos de la mayoría de los controles, las características y la funcionalidad de WinUI 3. Obtenga la aplicación en Microsoft Store u obtenga el código fuente en GitHub.

En el ejemplo de código siguiente se muestra cómo enlazar un control ListBox a los resultados de una consulta LINQ de agrupación. En este ejemplo, una colección de equipos se agrupa por ciudad y se muestra con el nombre de la ciudad como encabezados de grupo. Para obtener la lista de código completa, consulta el ejemplo de enlace de datos 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;

Comentarios

Use CollectionViewSource cuando desee enlazar controles de lista a colecciones, pero desea mostrar esas colecciones en grupos y mantener un elemento actual independiente del control de lista. Esto resulta especialmente útil cuando desea enlazar varios controles a la misma colección y desea que el elemento actual de un control cambie el elemento actual en los otros controles enlazados. Normalmente, se define un CollectionViewSource como un recurso XAML y se enlaza a él mediante la extensión de marcado {StaticResource}. A continuación, puede establecer su propiedad Source en el código subyacente en un tipo de colección admitido.

Todos los controles que se enlazan al mismo CollectionViewSource siempre tendrán el mismo elemento actual. Puede tener acceso al elemento actual mediante programación a través de la propiedad ICollectionView.CurrentItem del valor de la propiedad CollectionViewSource.View .

Si los elementos de la colección son colecciones, o son objetos que contienen colecciones, puede mostrar las colecciones como grupos dentro de la colección más grande. Para ello, establezca la propiedad IsSourceGrouped entrue. Si los elementos contienen colecciones pero no son colecciones, también debe establecer la propiedad ItemsPath en el nombre de la propiedad de colección.

Nota

No se admite establecer la propiedad Source en otra instancia de CollectionViewSource.

Constructores

CollectionViewSource()

Inicializa una nueva instancia de la clase CollectionViewSource .

Propiedades

Dispatcher

Siempre devuelve null en una aplicación de SDK de Aplicaciones para Windows. Use DispatcherQueue en su lugar.

(Heredado de DependencyObject)
DispatcherQueue

Obtiene el objeto DispatcherQueue al que está asociado este objeto. DispatcherQueue representa una instalación que puede acceder al DependencyObject en el subproceso de interfaz de usuario incluso si un subproceso que no es de interfaz de usuario inicia el código.

(Heredado de DependencyObject)
IsSourceGrouped

Obtiene o establece un valor que indica si los datos de origen están agrupados.

IsSourceGroupedProperty

Identifica la propiedad de dependencia IsSourceGrouped .

ItemsPath

Obtiene o establece la ruta de acceso de la propiedad que se va a seguir desde el elemento de nivel superior para buscar grupos dentro de CollectionViewSource.

ItemsPathProperty

Identifica la propiedad de dependencia ItemsPath .

Source

Obtiene o establece el objeto de colección desde el cual se va a crear esta vista.

SourceProperty

Identifica la propiedad de dependencia Source .

View

Obtiene el objeto de vista asociado actualmente a esta instancia de CollectionViewSource.

ViewProperty

Identifica la propiedad de dependencia View .

Métodos

ClearValue(DependencyProperty)

Borra el valor local de una propiedad de dependencia.

(Heredado de DependencyObject)
GetAnimationBaseValue(DependencyProperty)

Devuelve cualquier valor base establecido para una propiedad de dependencia, que se aplicaría en los casos en los que una animación no está activa.

(Heredado de DependencyObject)
GetValue(DependencyProperty)

Devuelve el valor efectivo actual de una propiedad de dependencia de dependencyObject.

(Heredado de DependencyObject)
ReadLocalValue(DependencyProperty)

Devuelve el valor local de una propiedad de dependencia, si se establece un valor local.

(Heredado de DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

Registra una función de notificación para escuchar los cambios en una dependencyProperty específica en esta instancia de DependencyObject .

(Heredado de DependencyObject)
SetValue(DependencyProperty, Object)

Establece el valor local de una propiedad de dependencia en dependencyObject.

(Heredado de DependencyObject)
UnregisterPropertyChangedCallback(DependencyProperty, Int64)

Cancela una notificación de cambio registrada anteriormente llamando a RegisterPropertyChangedCallback.

(Heredado de DependencyObject)

Se aplica a

Consulte también