Partager via


Résultats de la commande

Précédent : Ajouter des commandes de niveau supérieur à votre extension

Une commande IInvokableCommand est une unité fondamentale de faire quelque chose dans la palette de commandes. La méthode Invoke est appelée lorsque l’utilisateur sélectionne la commande, et c’est là que vous effectuez quelque chose dans votre extension. La méthode Invoke retourne un ICommandResult, qui indique à la palette de commandes ce qu’il faut faire après l’appel de la commande. Cette page détaille ce qui est possible avec chaque type de résultat de commande.

Le kit de ressources fournit un certain nombre de méthodes d’assistance pour créer des résultats de commande. Il s’agit de toutes les méthodes statiques sur la classe CommandResult . Appeler ces méthodes seules ne produira aucun effet. Vous devez retourner ces objets à la suite d’une méthode Invoke , pour que la palette de commandes les gère.

Remarque

Il existe des exemples de code pour les différentes méthodes CommandResult répertoriées sur cette page.

Résultat de la commande KeepOpen

Le résultat de la commande KeepOpen ne fait rien. Elle laisse la palette dans son état actuel, avec la pile de pages actuelle et la requête. Cela peut être utile pour les commandes qui souhaitent conserver l’utilisateur dans la palette de commandes, afin de continuer à utiliser la page active.

Remarque

Même lorsque vous renvoyez KeepOpen, le lancement d’une nouvelle application ou d’une nouvelle fenêtre à partir de la palette de commandes masquera automatiquement la palette dès que la fenêtre suivante obtient le focus.

Masquer le résultat de la commande

Ce résultat de commande permet d’ouvrir la page active, mais masque la palette de commandes. Cela peut être utile pour les commandes qui souhaitent extraire brièvement l’utilisateur de la palette de commandes, mais revenir à ce contexte.

Résultat de la commande GoBack

Ce résultat ramène l'utilisateur une page en arrière dans la palette de commandes et conserve la fenêtre visible. Cela est parfait pour les pages de formulaire, où la commande doit vous ramener l’utilisateur au contexte précédent.

Résultat de la commande GoHome

Ce résultat ramène l’utilisateur à la page principale de la palette de commandes. La palette restera visible (à moins qu'elle ne perde le focus). Envisagez d’utiliser cette option pour les scénarios où vous avez modifié vos commandes de niveau supérieur.

Ignorer le résultat de la commande

Ce résultat masque la palette de commandes après l’exécution de l’action et la ramène à la page d’accueil. Lors du lancement suivant, la palette de commandes démarre à partir de la page principale avec une requête vide. Cela est utile pour les commandes qui sont des actions ponctuelles ou qui n’ont pas besoin de conserver la palette de commandes ouverte.

Si vous ne savez pas ce qu’il faut utiliser, il doit s’agir de votre valeur par défaut. Dans l’idéal, les utilisateurs devraient accéder à la palette, trouver ce dont ils ont besoin et avoir terminé.

Résultat de la commande ShowToast

Ce résultat affiche un message temporaire au niveau du bureau à l’utilisateur. Cela est particulièrement utile pour afficher la confirmation qu’une action a eu lieu lorsque la palette sera fermée.

Veuillez considérer la commande CopyTextCommand dans les aides - cette commande affichera une notification toast avec le texte « Copié dans le presse-papiers », puis fermera la palette.

Par défaut, l'assistant CommandResult.ShowToast(string) aura un résultat de CommandResult.Dismiss. Toutefois, vous pouvez remplacer le résultat par l’un des autres résultats si vous le souhaitez. Cela vous permet d’afficher un toast et de garder la palette ouverte, si vous le souhaitez.

Confirmer le résultat de la commande

Ce résultat affiche une boîte de dialogue de confirmation à l’utilisateur. Si l’utilisateur confirme la boîte de dialogue, la commande primaire de ConfirmationArgs est effectuée.

Cela est utile pour les commandes susceptibles d’avoir des actions destructrices ou qui doivent confirmer l’intention de l’utilisateur.

Exemple :

Par exemple, voici une page avec une commande pour chaque type de résultat de commande :

Remarque

Si vous travaillez à partir de la section précédente, modifiez le code ci-dessous de CommandResultsPage à <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" },
        ];
    }
}

Suivant : Afficher le contenu markdown