Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Anterior: adicionar comandos de nível superior à sua extensão
Um IInvokableCommand é uma unidade fundamental para fazer algo na Paleta de Comandos. O método Invoke é chamado quando o usuário seleciona o comando e é onde você faz algo em sua extensão. O método Invoke retorna um ICommandResult, que informa à Paleta de Comandos o que fazer após a invocação do comando. Esta página detalha o que é possível com cada tipo de resultado de comando.
O kit de ferramentas fornece vários métodos auxiliares para criar resultados de comando. Todos esses são métodos estáticos na classe CommandResult . Chamar esses métodos por conta própria não fará nada. Você deve retornar esses objetos como resultado de um método Invoke , para que a Paleta de Comandos os manipule.
Observação
Há exemplos de código para os vários métodos CommandResult listados nesta página.
Resultado do comando KeepOpen
O resultado do comando KeepOpen não faz nada. Ele deixa a paleta no seu estado atual, com a pilha de páginas e as consultas atuais. Isso pode ser útil para comandos que desejam manter o usuário na Paleta de Comandos, para continuar trabalhando com a página atual.
Observação
Mesmo quando retornar KeepOpen, iniciar um novo aplicativo ou janela a partir da Paleta de Comandos ocultará automaticamente a paleta quando o foco for recebido pela próxima janela.
Ocultar o resultado do comando
Esse resultado de comando mantém a página atual aberta, mas oculta a Paleta de Comandos. Isso pode ser útil para comandos que desejam tirar o usuário brevemente da Paleta de Comandos, mas depois voltar para esse contexto.
Resultado do comando GoBack
Esse resultado leva o usuário de volta a uma página na Paleta de Comandos e mantém a janela visível. Isso é perfeito para páginas de formulário, em que fazer o comando deve levá-lo de volta ao contexto anterior.
Resultado do comando GoHome
Esse resultado leva o usuário de volta à página principal da Paleta de Comandos. Ele deixará a Paleta visível (a menos que a paleta perca o foco). Considere usar isso para cenários em que você alterou seus comandos de nível superior.
Ignorar o resultado do comando
Esse resultado oculta a Paleta de Comandos depois que a ação é executada e a leva de volta para a home page. Na próxima inicialização, a Paleta de Comandos começará na página principal com uma consulta em branco. Isso é útil para comandos que são ações pontuais ou que não precisam manter a Paleta de Comandos aberta.
Se você não sabe mais o que usar, esse deve ser o seu padrão. O ideal é que os usuários entrem na paleta, encontrem o que precisam e terminem o que precisam fazer com ela.
Resultado do comando ShowToast
Esse resultado exibe uma mensagem transitória no nível da área de trabalho para o usuário. Isso é especialmente útil para exibir a confirmação de que uma ação ocorreu quando a paleta será fechada.
Considere o CopyTextCommand nos auxiliares - esse comando mostrará um aviso com o texto "Copiado para área de transferência" e, em seguida, descartará a paleta.
Por padrão, a função auxiliar CommandResult.ShowToast(string) terá um Resultado de CommandResult.Dismiss. No entanto, você pode alterar o resultado para qualquer um dos outros resultados, se desejar. Isso permite que você exiba um brinde e mantenha a paleta aberta, se desejar.
Confirmar o resultado do comando
Esse resultado exibe uma caixa de diálogo de confirmação para o usuário. Se o usuário confirmar a caixa de diálogo, o PrimaryCommand dos ConfirmationArgs será executado.
Isso é útil para comandos que podem ter ações destrutivas ou que precisam confirmar a intenção do usuário.
Exemplo
Por exemplo, aqui está uma página com um comando para cada tipo de resultado de comando:
Observação
Se estiver trabalhando na seção anterior, modifique o código abaixo de CommandResultsPage para <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" },
];
}
}
Avançar: Exibir conteúdo de markdown
Conteúdo relacionado
Windows developer