Udostępnij przez


Wyniki poleceń

Poprzedni: Dodawanie poleceń najwyższego poziomu do rozszerzenia

Element IInvokableCommand reprezentuje pojedynczy element z możliwością działania w palecie poleceń — jest on wyzwalany po wybraniu polecenia przez użytkownika.

Po wybraniu polecenia wywoływana jest metoda Invoke . W tym miejscu implementujesz logikę dla tego, co powinno zrobić rozszerzenie. Metoda Invoke musi zwrócić CommandResult, który informuje paletę poleceń, jak odpowiedzieć po uruchomieniu polecenia — na przykład czy wyświetlić komunikat, otworzyć plik lub nic nie zrobić.

Na tej stronie wyjaśniono 7 różnych typów CommandResult , które można zwrócić i co robi każdy z nich:

Uwaga

Istnieją przykłady kodu dla różnych metod CommandResult wymienionych na tej stronie.

Wynik polecenia KeepOpen

Wynik polecenia KeepOpen nie daje efektu. Pozostawia paletę w bieżącym stanie z bieżącym stosem strony i zapytaniem. Może to być przydatne w przypadku poleceń, które chcą zachować użytkownika w palecie poleceń, aby kontynuować pracę z bieżącą stroną.

Uwaga

Nawet gdy zwracane jest KeepOpen, uruchomienie nowej aplikacji lub okna z palety poleceń spowoduje automatyczne ukrycie palety, gdy następne okno otrzyma fokus.

Ukryj wynik polecenia

Ten wynik polecenia utrzymuje otwartą bieżącą stronę, ale ukrywa paletę poleceń. Może to być przydatne w przypadku poleceń, które chcą na krótko wyłączyć użytkownika z palety poleceń, po czym mogą wrócić do tego kontekstu.

Wynik polecenia GoBack

Ten wynik pobiera użytkownika z powrotem na stronę w palecie poleceń i utrzymuje widoczne okno. Jest to idealne rozwiązanie dla stron formularzy, w których wykonanie polecenia powinno spowodować powrót użytkownika do poprzedniego kontekstu.

Wynik polecenia Narzędzia GoHome

Ten wynik powoduje powrót użytkownika do strony głównej palety poleceń. Pozostawi ona widoczną paletę (chyba że paleta utraci fokus). Rozważ użycie tej opcji w scenariuszach, w których zmieniono polecenia najwyższego poziomu.

Odrzuć wynik polecenia

Ten wynik ukrywa paletę poleceń po wykonaniu akcji i wraca do strony głównej. W następnym uruchomieniu paleta poleceń rozpocznie się od strony głównej z pustym zapytaniem. Jest to przydatne w przypadku poleceń jednorazowych lub takich, które nie muszą utrzymywać otwartej Palety Poleceń.

Jeśli nie wiesz, czego jeszcze użyć, powinno to być ustawienie domyślne. W idealnym przypadku użytkownicy powinni wejść do palety, znaleźć to, czego potrzebują, i zakończyć korzystanie z niej.

Wynik polecenia ShowToast

Ten wynik wyświetla użytkownikowi komunikat przejściowy na poziomie pulpitu. Jest to szczególnie przydatne w przypadku wyświetlania potwierdzenia, że akcja miała miejsce, gdy paleta będzie zamknięta.

Rozważ komendę CopyTextCommand w pomocnikach — ta komenda wyświetli powiadomienie z tekstem "Skopiowane do schowka", a następnie zamknie paletę.

Domyślnie obiekt pomocniczy CommandResult.ShowToast(string) będzie miał wynikCommandResult.Dismiss. Można jednak zmienić wynik na dowolny z innych wyników, jeśli chcesz. Dzięki temu można wyświetlić powiadomienie i pozostawić paletę otwartą, jeśli sobie życzysz.

Potwierdź wynik polecenia

Ten wynik wyświetla użytkownikowi okno dialogowe potwierdzenia. Jeśli użytkownik potwierdzi okno dialogowe, zostanie wykonane PrimaryCommand z ConfirmationArgs.

Jest to przydatne w przypadku poleceń, które mogą mieć destrukcyjne akcje lub muszą potwierdzić intencję użytkownika.

Przykład

Poniżej znajduje się strona z jednym poleceniem dla każdego typu CommandResult:

  1. Otwórz /Pages/<ExtensionName>Page.cs
  2. Zastąp GetItems element poniższym kodem GetItems :

using Microsoft.CommandPalette.Extensions;
using Microsoft.CommandPalette.Extensions.Toolkit;

internal sealed partial class <ExtensionName>Page : ListPage
{
    public <ExtensionName>Page()
    {
        Icon = IconHelpers.FromRelativePath("Assets\\StoreLogo.png");
        Title = "Example command results";
        Name = "Open";
    }

    public override IListItem[] GetItems()
    {
        ConfirmationArgs confirmArgs = new()
        {
            PrimaryCommand = new AnonymousCommand(
                () =>
                {
                    ToastStatusMessage t = new("The dialog was confirmed");
                    t.Show();
                })
            {
                Name = "Confirm",
                Result = CommandResult.KeepOpen(),
            },
            Title = "You can set a title for the dialog",
            Description = "Are you really sure you want to do the thing?",
        };

        return
        [
            new ListItem(new AnonymousCommand(null) { Result = CommandResult.KeepOpen() }) { Title = "Keep the palette open" },
            new ListItem(new AnonymousCommand(null) { Result = CommandResult.Hide() }) { Title = "Hide the palette" },
            new ListItem(new AnonymousCommand(null) { Result = CommandResult.GoBack() }) { Title = "Go back" },
            new ListItem(new AnonymousCommand(null) { Result = CommandResult.GoHome() }) { Title = "Go home" },
            new ListItem(new AnonymousCommand(null) { Result = CommandResult.Dismiss() }) { Title = "Dismiss the palette" },
            new ListItem(new AnonymousCommand(null) { Result = CommandResult.ShowToast("What's up") }) { Title = "Show a toast" },
            new ListItem(new AnonymousCommand(null) { Result = CommandResult.Confirm(confirmArgs) }) { Title = "Confirm something" },
        ];
    }
}
  1. Wdrażanie rozszerzenia
  2. W palecie poleceń, Reload

Zrzut ekranu rozszerzenia z kilkoma poleceniami dla CommandResult

Dalej: Wyświetlanie zawartości markdown