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
- Mensagem
- Botões de escolha
- 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
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
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: