Tworzenie monitów użytkownika programu Visual Studio

Monity użytkownika to prosty mechanizm interfejsu użytkownika umożliwiający monitowanie użytkownika o dokonanie wyboru. Monitowanie użytkownika o utworzenie okna dialogowego z komunikatem, jeden do trzech przycisków wyboru i przycisk odrzuć.

Uwaga

Dokładny interfejs użytkownika używany do monitowania użytkowników może ulec zmianie w przyszłych wersjach na podstawie opinii użytkowników lub innych czynników.

Typowe przykłady to żądanie potwierdzenia z monitem OK/Anuluj lub poproś użytkownika o wybranie spośród małego zestawu opcji (nie więcej niż trzy).

Użytkownik zawsze ma możliwość odrzucenia monitu bez dokonywania wyboru.

Opcje przedstawione użytkownikowi są mapowane na zwracanie wartości typu zdefiniowanego w parametrze TResult typu.

Części monitu użytkownika

Screenshot showing the parts of a user prompt.

  1. Wiadomość
  2. Przyciski wyboru
  3. Przycisk Odrzuć

Rozpocznij

Aby rozpocząć, postępuj zgodnie z sekcją tworzenie projektu w sekcji Wprowadzenie.

Praca z monitami użytkownika

W tym przewodniku opisano następujące scenariusze pracy z monitami użytkownika:

Wyświetlanie monitu użytkownika

Utworzenie monitu użytkownika przy użyciu nowego modelu rozszerzalności jest tak proste, jak wywoływanie ShowPromptAsync metody z pomocników ShellExtensibility i przekazywanie opcji.

ShellExtensibility.ShowPromptAsync<TResult>()

Metoda ShowPromptAsync przyjmuje trzy parametry:

Parametr Type Wymagania opis
wiadomość string tak Tekst komunikatu dla monitu.
options PromptOptions<TResult> tak Definiuje opcje użytkownika, mapowanie ich w celu zwrócenia wartości.
cancellationToken CancellationToken Tak Element CancellationToken dla operacji asynchronicznych. Po wyzwoleniu monit zostanie wymuszony.

Przykład

Poniższy kod wewnątrz elementu Command wyświetla monit użytkownika z prostym komunikatem i przyciskiem OK.

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

Korzystanie z wbudowanych opcji

W zestawie SDK jest dostępnych kilka zestawów wstępnie zdefiniowanych PromptOptions .

OK

Opcja wyboru Wartość domyślna Wartość zwracana
"OK" Tak prawda
Oddalił fałsz

OKCancel

Opcja wyboru Wartość domyślna Wartość zwracana
"OK" Tak prawda
"Anuluj" Nie. fałsz
Oddalił fałsz

Ponów próbęCancel

Opcja wyboru Wartość domyślna Wartość zwracana
"Ponów próbę" Tak prawda
"Anuluj" Nie. fałsz
Oddalił fałsz

Przykład

Screenshot showing a user prompt with OK.

Utwórz monit z jednym wyborem "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;
    }
    
    ...
}

Jeśli użytkownik kliknie przycisk "OK", ShowPromptAsync zwraca true wartość w przypadku oczekiwania. Jeśli użytkownik kliknie przycisk odrzucania, zwraca wartość false.

Zmiana domyślnego wyboru wbudowanej opcji na "Anuluj"

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;
  }
  
  ...
}

Tworzenie monitu z opcjami niestandardowymi

Screenshot showing a custom user prompt.

Oprócz wbudowanych opcji można dostosować opcje prezentowane użytkownikowi i zwracanej wartości zamapowanej na poszczególne.

Zamiast używać zestawów zdefiniowanych w PromptOptionsprogramie , utwórz nowe wystąpienie PromptOptions<TResult> klasy i przekaż je do ShowPromptAsyncklasy .

Przykład

Zacznij od utworzenia typu wartości w celu zdefiniowania zwracanych wartości:

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

Następnie utwórz PromptOptions<TResult> wystąpienie i przekaż je wraz ShowPromptAsync z wymaganymi message argumentami i cancellationToken :

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}");
}

Kolekcja Choices mapuje opcje użytkownika na wartości w wyliczenie TokenThemeResult . DismissedReturns Ustawia wartość zwracaną, jeśli użytkownik kliknie przycisk odrzucania. DefaultChoiceIndex jest indeksem Choices opartym na zera w kolekcji, który definiuje wybór domyślny.

Następne kroki

W poniższych przykładach pokazano, jak pracować z monitami użytkownika: