Compartir a través de


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, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 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.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
class CollectionViewSource final : DependencyObject
[Windows.Foundation.Metadata.Activatable(65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class CollectionViewSource : DependencyObject
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
public sealed class CollectionViewSource : DependencyObject
Public NotInheritable Class CollectionViewSource
Inherits DependencyObject
<CollectionViewSource .../>
Herencia
Object Platform::Object IInspectable DependencyObject CollectionViewSource
Atributos

Requisitos de Windows

Familia de dispositivos
Windows 10 (se introdujo en la versión 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (se introdujo en la versión v1.0)

Ejemplos

Sugerencia

Para obtener más información, instrucciones de diseño y ejemplos de código, consulte Enlace de datos en profundidad.

Si tienes instalada la aplicación WinUI 2 Gallery , haz clic aquí para abrir la aplicación y ver un ejemplo de agrupación con SemanticZoom en acción.

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

Para obtener un ejemplo más detallado, consulta el ejemplo de enlace de datos XAML.

Comentarios

Use CollectionViewSource cuando desee enlazar controles de lista a colecciones, pero quiere mostrar esas colecciones en grupos y mantener un elemento actual independiente del control de lista. Esto es 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 demás controles enlazados. Normalmente, se define un collectionViewSource como un recurso XAML y se enlaza a él mediante la extensión de marcado {StaticResource}. Después, 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

Obtiene el CoreDispatcher al que está asociado este objeto. CoreDispatcher representa una instalación que puede acceder a DependencyObject en el subproceso de la 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 propiedad que se debe 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 mediante una llamada a RegisterPropertyChangedCallback.

(Heredado de DependencyObject)

Se aplica a

Consulte también