CollectionViewSource Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
- 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) |