CollectionViewSource Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Fornece uma fonte de dados que adiciona o agrupamento e o suporte de item atual às classes de coleção.
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 .../>
- Herança
- Atributos
Requisitos do Windows
Família de dispositivos |
Windows 10 (introduzida na 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (introduzida na v1.0)
|
Exemplos
Dica
Para obter mais informações, diretrizes de design e exemplos de código, consulte Associação de dados detalhadamente.
Se você tiver o aplicativo WinUI 2 Gallery instalado, clique aqui para abrir o aplicativo e ver um exemplo de agrupamento com SemanticZoom em ação.
O exemplo de código a seguir demonstra como associar um controle ListBox aos resultados de uma consulta LINQ de agrupamento (uma coleção de equipes é agrupada por cidade e exibida com o nome da cidade como cabeçalhos de grupo). Para obter a listagem de código completa, consulte o exemplo de associação de dados 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 obter um exemplo mais detalhado, consulte o exemplo de associação de dados XAML.
Comentários
Use CollectionViewSource quando quiser associar controles de lista a coleções, mas você deseja exibir essas coleções em grupos e manter um item atual independente do controle de lista. Isso é particularmente útil quando você deseja associar vários controles à mesma coleção e deseja que o item atual em um controle altere o item atual nos outros controles associados. Normalmente, você define um CollectionViewSource como um recurso XAML e associa a ele usando a extensão de marcação {StaticResource}. Em seguida, você pode definir sua propriedade Source em code-behind para um tipo de coleção com suporte.
Todos os controles associados ao mesmo CollectionViewSource sempre terão o mesmo item atual. Você pode acessar o item atual programaticamente por meio da propriedade ICollectionView.CurrentItem do valor da propriedade CollectionViewSource.View .
Se os itens da coleção forem coleções em si ou forem objetos que contêm coleções, você poderá exibir as coleções como grupos dentro da coleção maior. Para fazer isso, defina a propriedade IsSourceGrouped comotrue. Se os itens contiverem coleções, mas não forem coleções em si, você também deverá definir a propriedade ItemsPath como o nome da propriedade da coleção.
Observação
Não há suporte para a definição da propriedade Source para outra instância collectionViewSource.
Construtores
CollectionViewSource() |
Inicializa uma nova instância da classe CollectionViewSource . |
Propriedades
Dispatcher |
Obtém o CoreDispatcher ao qual esse objeto está associado. O CoreDispatcher representa uma instalação que pode acessar DependencyObject no thread da interface do usuário mesmo que o código seja iniciado por um thread que não seja da interface do usuário. (Herdado de DependencyObject) |
IsSourceGrouped |
Obtém ou define um valor que indica se os dados de origem estão agrupados. |
IsSourceGroupedProperty |
Identifica a propriedade de dependência IsSourceGrouped . |
ItemsPath |
Obtém ou define o caminho da propriedade a seguir do item de nível superior para localizar grupos dentro do CollectionViewSource. |
ItemsPathProperty |
Identifica a propriedade de dependência ItemsPath . |
Source |
Obtém ou define o objeto da coleção do qual essa exibição deve ser criada. |
SourceProperty |
Identifica a propriedade Dependência de origem . |
View |
Obtém o objeto de exibição que está associado atualmente a esta instância de CollectionViewSource. |
ViewProperty |
Identifica a propriedade Exibir dependência. |
Métodos
ClearValue(DependencyProperty) |
Limpa o valor local de uma propriedade de dependência. (Herdado de DependencyObject) |
GetAnimationBaseValue(DependencyProperty) |
Retorna qualquer valor base estabelecido para uma propriedade de dependência, que se aplicaria nos casos em que uma animação não está ativa. (Herdado de DependencyObject) |
GetValue(DependencyProperty) |
Retorna o valor efetivo atual de uma propriedade de dependência de um DependencyObject. (Herdado de DependencyObject) |
ReadLocalValue(DependencyProperty) |
Retorna o valor local de uma propriedade de dependência, se um valor local for definido. (Herdado de DependencyObject) |
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback) |
Registra uma função de notificação para escutar alterações em uma DependencyProperty específica nesta instância dependencyObject . (Herdado de DependencyObject) |
SetValue(DependencyProperty, Object) |
Define o valor local de uma propriedade de dependência em um DependencyObject. (Herdado de DependencyObject) |
UnregisterPropertyChangedCallback(DependencyProperty, Int64) |
Cancela uma notificação de alteração que foi registrada anteriormente chamando RegisterPropertyChangedCallback. (Herdado de DependencyObject) |