Partilhar via


CollectionViewSource Classe

Definição

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
Object Platform::Object IInspectable DependencyObject CollectionViewSource
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 null em um aplicativo SDK do Aplicativo Windows. Em vez disso, use DispatcherQueue .

(Herdado de DependencyObject)
DispatcherQueue

Obtém o ao DispatcherQueue qual esse objeto está associado. O DispatcherQueue representa uma instalação que pode acessar o 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)

Aplica-se a

Confira também