Barra de progresso das notificações da aplicação e ligação de dados

Usar uma barra de progresso dentro da notificação da aplicação permite-lhe transmitir ao utilizador o estado de operações de longa duração, como downloads, renderização de vídeo, objetivos de exercício e muito mais.

Uma barra de progresso dentro de uma notificação de aplicação pode ser "indeterminada" (sem valor específico, pontos animados indicam que uma operação está a ocorrer) ou "determinada" (uma percentagem específica da barra está preenchida, como 60%).

A imagem abaixo mostra uma barra de progresso determinada com todas as suas propriedades correspondentes rotuladas.

Para mais informações sobre as notificações da aplicação, consulte Visão Geral das notificações da aplicação.

Notificação da aplicação com propriedades da barra de progresso rotuladas
Propriedade Tipo Obrigatório Descrição
Título string ou BindableString falso Obtém ou define uma cadeia de caracteres de título opcional. Suporta vinculação de dados.
Value duplo ou AdaptiveProgressBarValue ou BindableProgressBarValue falso Obtém ou define o valor da barra de progresso. Suporta vinculação de dados. O valor padrão é 0. Pode ser um duplo entre 0.0 e 1.0, AdaptiveProgressBarValue.Indeterminate, ou new BindableProgressBarValue("myProgressValue").
ValueStringOverride string ou BindableString falso Obtém ou define uma cadeia de caracteres opcional a ser exibida em vez da cadeia de porcentagem padrão. Se isso não for fornecido, algo como "70%" será exibido.
Situação string ou BindableString verdadeiro Obtém ou define uma cadeia de caracteres de status (obrigatório), que é exibida abaixo da barra de progresso à esquerda. Essa cadeia de caracteres deve refletir o status da operação, como "Baixando..." ou "Instalando..."

Use AppNotificationBuilder.AddProgressBar para adicionar uma barra de progresso à sua notificação. O exemplo seguinte gera a notificação mostrada acima.

var builder = new AppNotificationBuilder()
    .AddText("Downloading your weekly playlist...")
    .AddProgressBar(new AppNotificationProgressBar()
        .SetTitle("Weekly playlist")
        .SetValue(0.6)
        .SetValueStringOverride("15/26 songs")
        .SetStatus("Downloading..."));

Para atualizar dinamicamente os valores da barra de progresso, utilize a ligação de dados conforme descrito na secção seguinte.

Atualizar a barra de progresso com vinculação de dados

Para mostrar uma barra de progresso em tempo real, use data binding para atualizar os valores das notificações sem ter de reenviar toda a notificação.

  1. Construa conteúdo de notificação com campos ligados aos dados, chamando os Bind métodos no AppNotificationProgressBar.
  2. Atribua uma Etiqueta (e, opcionalmente, um Grupo) para identificar a notificação.
  3. Defina os valores iniciais do AppNotificationProgressData .
  4. Mostre a notificação chamando AppNotificationManager.Default.Show.
using Microsoft.Windows.AppNotifications;
using Microsoft.Windows.AppNotifications.Builder;

string tag = "weekly-playlist";
string group = "downloads";

var builder = new AppNotificationBuilder()
    .AddText("Downloading your weekly playlist...")
    .AddProgressBar(new AppNotificationProgressBar()
        .BindTitle()
        .BindValue()
        .BindValueStringOverride()
        .BindStatus());

var notification = builder.BuildNotification();
notification.Tag = tag;
notification.Group = group;

notification.Progress = new AppNotificationProgressData(1)
{
    Title = "Weekly playlist",
    Value = 0.6,
    ValueStringOverride = "15/26 songs",
    Status = "Downloading..."
};

AppNotificationManager.Default.Show(notification);

Depois, atualize os valores de progresso chamando AppNotificationManager.Default.UpdateAsync com uma nova instância AppNotificationProgressData . Incremente o número de sequência para que a plataforma saiba que esta é uma atualização mais recente.

using Microsoft.Windows.AppNotifications;

string tag = "weekly-playlist";
string group = "downloads";

var data = new AppNotificationProgressData(2)
{
    Value = 0.7,
    ValueStringOverride = "18/26 songs"
};

await AppNotificationManager.Default.UpdateAsync(data, tag, group);

Usar o UpdateAsync em vez de substituir toda a notificação garante que a notificação permanece na mesma posição no Centro de Notificações e não se move para cima ou para baixo. O método devolve um NotificationUpdateResult que indica se a atualização teve sucesso ou se a notificação não foi encontrada (o utilizador pode tê-la ignorado).

Elementos que suportam ligação de dados

Os seguintes elementos nas notificações da aplicação suportam a ligação de dados:

  • Todas as propriedades no AppNotificationProgressBar
  • A propriedade Text nos elementos de texto de nível superior

Atualizar ou substituir uma notificação

Pode substituir uma notificação enviando uma nova notificação com a mesma Tag e Grupo. A tabela seguinte descreve a diferença entre substituir e atualizar uma notificação.

Substituição Atualização
Posição no Centro de Notificação Move a notificação para o topo do Centro de Notificações. Deixa a notificação no mesmo sítio dentro do Centro de Notificações.
Modificação de conteúdo Pode alterar completamente todo o conteúdo e o layout da notificação. Só pode alterar propriedades que suportem vinculação de dados (barra de progresso e texto do nível superior).
Reaparecendo como popup Pode reaparecer como uma janela pop-up se SuppressPopup estiver false (ou estiver configurado para true para enviar discretamente ao Centro de Notificações). Não volta a aparecer como pop-up; os dados da notificação são atualizados silenciosamente no Centro de Notificações.
Utilizador dispensado A notificação de substituição é sempre enviada, independentemente de o utilizador ter ignorado a notificação anterior. Se o utilizador ignorou a notificação, a atualização falha.

Em geral, atualizar é útil para informações que mudam frequentemente e não requerem a atenção imediata do utilizador, como o progresso que muda de 50% para 65%.

Depois de a sua sequência de atualizações terminar (por exemplo, um ficheiro terminou de ser descarregado), considere substituir a notificação para a etapa final porque:

  • A notificação final provavelmente tem uma disposição diferente, como a remoção da barra de progresso ou a adição de novos botões.
  • O utilizador pode ter ignorado a notificação de progresso, mas ainda quer ver um pop-up quando a operação terminar.

Consulte também