Compartilhar via


Listas invertidas

Você pode usar um modo de exibição de lista para apresentar uma conversa em uma experiência de chat com itens visualmente distintos para representar o remetente/destinatário. O uso de cores diferentes e alinhamento horizontal para separar as mensagens do remetente/destinatário ajuda o usuário a se orientar rapidamente em uma conversa.

APIs importantes: classe ListView, classe ItemsStackPanel, propriedade ItemsUpdatingScrollMode

Normalmente, você precisará apresentar a lista de forma que ela pareça crescer de baixo para cima, em vez de de cima para baixo. Quando uma nova mensagem chega e é adicionada ao final, as mensagens anteriores deslizam para cima para abrir espaço chamando a atenção do usuário para a última chegada. No entanto, se um usuário rolou para cima para ver as respostas anteriores, a chegada de uma nova mensagem não deve causar uma mudança visual que interrompa seu foco.

Aplicativo de chat com a lista invertida

Criar uma lista invertida

Para criar uma lista invertida, use uma exibição de lista com um ItemsStackPanel como seu painel de itens. No ItemsStackPanel, defina o ItemsUpdatingScrollMode como KeepLastItemInView.

Importante

O valor de enumeração KeepLastItemInView está disponível a partir do Windows 10, versão 1607. Você não pode usar esse valor quando seu aplicativo é executado em versões anteriores do Windows 10.

Este exemplo mostra como alinhar os itens do modo de exibição de lista à parte inferior e indicar que, quando houver uma alteração nos itens, o último item deve permanecer no modo de exibição.

XAML

<ListView>
   <ListView.ItemsPanel>
       <ItemsPanelTemplate>
           <ItemsStackPanel VerticalAlignment="Bottom"
                            ItemsUpdatingScrollMode="KeepLastItemInView"/>
       </ItemsPanelTemplate>
   </ListView.ItemsPanel>
</ListView>

Recomendações

  • Alinhe as mensagens do remetente/destinatário em lados opostos para tornar o fluxo da conversa claro para os usuários.
  • Anime as mensagens existentes para exibir a mensagem mais recente se o usuário já estiver no final da conversa aguardando a próxima mensagem.
  • Não interrompa o foco dos usuários movendo itens se eles não estiverem lendo o final da conversa.

Obter o código de exemplo