Freigeben über


Befehlsergebnisse

Zurück: Hinzufügen von Befehlen auf oberster Ebene zu Ihrer Erweiterung

Ein IInvokableCommand ist eine grundlegende Einheit, um etwas in der Befehlspalette auszuführen. Die Invoke-Methode wird aufgerufen, wenn der Benutzer den Befehl auswählt, und es ist der Ort, an dem Sie etwas in Ihrer Erweiterung ausführen . Die Invoke-Methode gibt ein ICommandResult zurück, das die Befehlspalette angibt, was nach dem Aufrufen des Befehls zu tun ist. Auf dieser Seite wird beschrieben, was mit jedem Befehlsergebnistyp möglich ist.

Das Toolkit stellt eine Reihe von Hilfsmethoden zum Erstellen von Befehlsergebnissen bereit. Dies sind alle statischen Methoden für die CommandResult-Klasse . Das Aufrufen dieser Methoden allein wird nichts bewirken. Sie müssen diese Objekte als Ergebnis einer Invoke-Methode zurückgeben, damit sie von Befehlspalette behandelt werden können.

Hinweis

Es gibt Codebeispiele für die verschiedenen CommandResult-Methoden, die auf dieser Seite aufgeführt sind.

KeepOpen-Befehlsergebnis

Das Ergebnis des Befehls "KeepOpen" führt nichts aus. Die Palette wird im aktuellen Zustand belassen, mit dem aktuellen Seitenstack und der aktuellen Abfrage. Dies kann für Befehle nützlich sein, die den Benutzer in der Befehlspalette behalten möchten, um weiterhin mit der aktuellen Seite zu arbeiten.

Hinweis

Selbst beim Zurückgeben von KeepOpen blendet das Starten einer neuen App oder eines neuen Fensters aus der Befehlspalette die Palette automatisch aus, wenn das nächste Fenster den Fokus erhält.

Befehlsergebnis ausblenden

Dieses Befehlsergebnis hält die aktuelle Seite geöffnet, blendet jedoch die Befehlspalette aus. Dies kann für Befehle nützlich sein, die den Benutzer kurz aus der Befehlspalette entfernen möchten, aber dann wieder zu diesem Kontext zurückkehren.

GoBack-Befehlsergebnis

Dieses Ergebnis führt den Benutzer zurück zu einer Seite in der Befehlspalette und hält das Fenster sichtbar. Dies eignet sich perfekt für Formularseiten, bei denen der Befehl den Benutzer zum vorherigen Kontext zurückführen sollte.

GoHome-Befehlsergebnis

Dieses Ergebnis führt den Benutzer zurück zur Hauptseite der Befehlspalette. Die Palette bleibt sichtbar (es sei denn, die Palette verliert den Fokus). Erwägen Sie dies für Szenarien, in denen Sie Ihre Befehle auf oberster Ebene geändert haben.

Befehlsergebnis schließen

Dieses Ergebnis blendet die Befehlspalette nach dem Ausführen der Aktion aus und führt sie zurück zur Startseite. Beim nächsten Start beginnt die Befehlspalette von der Hauptseite mit einer leeren Abfrage. Dies ist nützlich für Befehle, die einmalige Aktionen sind oder die die Befehlspalette nicht geöffnet lassen müssen.

Wenn Sie nicht wissen, was sonst noch zu verwenden ist, sollte dies Ihre Standardeinstellung sein. Im Idealfall sollten Benutzer in die Palette kommen, finden, was sie brauchen, und damit fertig sein.

ShowToast-Befehlsergebnis

Dieses Ergebnis zeigt dem Benutzer eine vorübergehende Meldung auf Desktopebene an. Dies ist besonders hilfreich zum Anzeigen der Bestätigung, dass eine Aktion ausgeführt wurde, wenn die Palette geschlossen wird.

Berücksichtigen Sie den CopyTextCommand in den Hilfsprogrammen. Dieser Befehl zeigt ein Popup mit dem Text „In Zwischenablage kopiert” an und blendet dann die Palette aus.

Standardmäßig zeigt das commandResult.ShowToast(string)-Hilfsprogramm ein Ergebnis von CommandResult.Dismiss an. Sie können das Ergebnis jedoch bei Bedarf in eines der anderen Ergebnisse ändern. Auf diese Weise können Sie eine Benachrichtigung anzeigen und die Palette geöffnet lassen, wenn Sie möchten.

Befehlsergebnis bestätigen

Dieses Ergebnis zeigt dem Benutzer ein Bestätigungsdialogfeld an. Wenn der Benutzer das Dialogfeld bestätigt, wird der PrimaryCommand der ConfirmationArgs ausgeführt.

Dies ist nützlich für Befehle, die möglicherweise schädliche Aktionen haben, oder die Benutzerabsichten bestätigen müssen.

Beispiel

Beispiel: Hier ist eine Seite mit einem Befehl für jede Art von Befehlsergebnis:

Hinweis

Wenn Sie aus dem vorherigen Abschnitt arbeiten, ändern Sie den folgenden Code von CommandResultsPage zu <ExtensionName>Page.


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

internal sealed partial class CommandResultsPage : ListPage
{
    public CommandResultsPage()
    {
        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" },
        ];
    }
}

Nächstes: Anzeigen von Markdowninhalten