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, "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
- 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 |
DispatcherQueue |
Obtiene el objeto |
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) |