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, "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 .../>
- Herança
- Atributos
Exemplos
Dica
Para obter mais informações, diretrizes de design e exemplos de código, consulte Zoom semântico.
O aplicativo Galeria da WinUI 3 inclui exemplos interativos da maioria dos controles, recursos e funcionalidades da WinUI 3. Obtenha o aplicativo na Microsoft Store ou o código-fonte no GitHub.
O exemplo de código a seguir demonstra como associar um controle ListBox aos resultados de uma consulta LINQ de agrupamento. Neste exemplo, 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;
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 |
Sempre retorna |
DispatcherQueue |
Obtém o ao |
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) |