Compartilhar via


Criar prompts de usuário do Visual Studio

Os prompts do usuário são um mecanismo de interface do usuário simples para solicitar que o usuário faça uma seleção. Solicitar ao usuário cria uma caixa de diálogo com uma mensagem, um a três botões para as opções e um botão de descarte.

Observação

A interface do usuário exata usada para avisar os usuários pode ser alterada em versões futuras com base nos comentários do usuário ou em outros fatores.

Exemplos comuns são solicitar confirmação com um prompt OK/Cancelar ou pedir ao usuário para escolher entre um pequeno conjunto de opções (não mais do que três).

O usuário sempre tem a opção de descartar o prompt sem fazer uma seleção.

As opções apresentadas ao usuário são mapeadas para retornar valores do tipo definido no TResult parâmetro type.

Partes de um prompt do usuário

Screenshot showing the parts of a user prompt.

  1. Mensagem
  2. Botões de escolha
  3. Botão Dispensar

Introdução

Para começar, siga a seção criar o projeto na seção Introdução.

Trabalhar com prompts do usuário

Este guia aborda os seguintes cenários para trabalhar com Prompts do Usuário:

Exibir um prompt do usuário

Criar um prompt do usuário com o novo Modelo de Extensibilidade é tão simples quanto chamar o ShowPromptAsync método dos auxiliares ShellExtensibility e passar suas opções.

ShellExtensibility.ShowPromptAsync<TResult>()

O ShowPromptAsync método usa três parâmetros:

Parâmetro Type Obrigatória Descrição
mensagem string sim O texto da mensagem para o prompt.
opções PromptOptions<TResult> sim Define as opções do usuário, mapeando-as para retornar valores.
cancellationToken CancellationToken Sim O CancellationToken para a operação assíncrona. Quando acionado, o prompt é fechado à força.

Exemplo

O código a seguir dentro de um mostra um prompt do usuário com uma mensagem simples e um Command botão OK.

public override async Task ExecuteCommandAsync(IClientContext context, CancellationToken cancellationToken)
{
    await this.Extensibility.Shell().ShowPromptAsync("This is a user prompt.", PromptOptions.OK, cancellationToken))
}

Usar opções internas

Vários conjuntos de predefinições PromptOptions estão disponíveis no SDK.

OK

Opção Default Valor de retorno
"Está bem" Sim true
Ignorado false

OKCancel

Opção Default Valor de retorno
"Está bem" Sim true
"Cancelar" Não false
Ignorado false

Repetir Cancelar

Opção Default Valor de retorno
"Repetir a tentativa" Sim true
"Cancelar" Não false
Ignorado false

Exemplo

Screenshot showing a user prompt with OK.

Crie um prompt com uma única opção "OK".

public override async Task ExecuteCommandAsync(IClientContext context, CancellationToken ct)
{
    // Asking the user to confirm an operation.
    if (!await this.Extensibility.Shell().ShowPromptAsync("Continue with executing the command?", PromptOptions.OKCancel, ct))
    {
      return;
    }
    
    ...
}

Se o usuário clicar em "OK", ShowPromptAsync retornará true quando aguardado. Se o usuário clicar no botão descartar, ele retornará false.

Altere a opção padrão de uma opção interna para "Cancelar"

public override async Task ExecuteCommandAsync(IClientContext context, CancellationToken ct)
{
  // Asking the user to confirm an operation.
  if (!await this.Extensibility.Shell().ShowPromptAsync("Continue with executing the command?", PromptOptions.OKCancel.WithCancelAsDefault(), ct))
  {
    return;
  }
  
  ...
}

Criar um prompt com opções personalizadas

Screenshot showing a custom user prompt.

Além das opções internas, você pode personalizar as opções apresentadas ao usuário e o valor de retorno mapeado para cada uma.

Em vez de usar os conjuntos definidos no PromptOptions, crie uma nova instância de PromptOptions<TResult> e passe-a para ShowPromptAsync.

Exemplo

Comece criando um tipo de valor para definir os valores de retorno:

public enum TokenThemeResult
{
  None,
  Solarized,
  OneDark,
  GruvBox,
}

Em seguida, crie a instância e passe-a PromptOptions<TResult> para ShowPromptAsync junto com os argumentos necessários message e cancellationToken necessários:

public override async Task ExecuteCommandAsync(IClientContext context, CancellationToken ct)
{
  // Custom prompt
  var themeResult = await this.Extensibility.Shell().ShowPromptAsync(
    "Which theme should be used for the generated output?",
    new PromptOptions<TokenThemeResult>
    {
      Choices =
      {
        { "Solarized Is Awesome", TokenThemeResult.Solarized },
        { "OneDark Is The Best", TokenThemeResult.OneDark },
        { "GruvBox Is Groovy", TokenThemeResult.GruvBox },
      },
      DismissedReturns = TokenThemeResult.None,
      DefaultChoiceIndex = 2,
    },
    ct);

  Debug.WriteLine($"Selected Token Theme: {themeResult}");
}

A Choices coleção mapeia as escolhas do usuário para valores no TokenThemeResult enum. DismissedReturns Define o valor retornado se o usuário clicar no botão Dispensar. DefaultChoiceIndex é um índice baseado em zero na Choices coleção que define a escolha padrão.

Próximas etapas

Os exemplos a seguir demonstram como trabalhar com prompts do usuário: