Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Anterior: Agregar comandos de nivel superior a la extensión
IInvokableCommand es una unidad fundamental de hacer algo en la paleta de comandos. Se llama al método Invoke cuando el usuario selecciona el comando, y es donde realizas alguna acción en tu extensión. El método Invoke devuelve un ICommandResult, que indica a la paleta de comandos qué hacer después de invocar el comando. En esta página se detalla lo que es posible con cada tipo de resultado de comando.
El kit de herramientas proporciona una serie de métodos auxiliares para crear resultados de comandos. Estos son todos los métodos estáticos de la clase CommandResult . Llamar a estos métodos por sí solos no hará nada. Debe devolver esos objetos como resultado de un método Invoke , para que la paleta de comandos las controle.
Nota:
Hay ejemplos de código para los distintos métodos CommandResult enumerados en esta página.
Resultado del comando KeepOpen
El resultado del comando KeepOpen no hace nada. Deja la paleta en su estado actual, con la pila de páginas y la consulta actuales. Esto puede ser útil para los comandos que desean mantener al usuario en la paleta de comandos, para seguir trabajando con la página actual.
Nota:
Incluso al devolver KeepOpen, el inicio de una nueva aplicación o ventana desde la paleta de comandos ocultará automáticamente la paleta cuando la siguiente ventana reciba el foco.
Ocultar resultado del comando
Este resultado del comando mantiene abierta la página actual, pero oculta la paleta de comandos. Esto puede ser útil para los comandos que quieren sacar al usuario brevemente de la paleta de comandos, pero luego volver a este contexto.
Resultado del comando GoBack
Este resultado devuelve al usuario una página de la paleta de comandos y mantiene la ventana visible. Esto es perfecto para las páginas de formulario, donde ejecutar el comando debe llevar al usuario al contexto anterior.
Resultado del comando GoHome
Este resultado devuelve al usuario a la página principal de la paleta de comandos. Dejará visible la paleta (a menos que la paleta pierda el foco). Considere la posibilidad de usar esto para escenarios en los que ha cambiado los comandos de nivel superior.
Resultado del comando Dismiss
Este resultado oculta la paleta de comandos después de ejecutar la acción y la vuelve a la página principal. En el siguiente inicio, la paleta de comandos se iniciará desde la página principal con una consulta en blanco. Esto es útil para los comandos que son acciones puntuales o que no necesitan mantener abierta la paleta de comandos.
Si no sabe qué más usar, debe ser el valor predeterminado. Idealmente, los usuarios deben entrar en la paleta, encontrar lo que necesitan y hacerse con ella.
Resultado del comando ShowToast
Este resultado muestra un mensaje transitorio de nivel de escritorio al usuario. Esto resulta especialmente útil para mostrar la confirmación de que se ha realizado una acción cuando se cierre la paleta.
Considere usar CopyTextCommand en los asistentes: este comando mostrará una notificación emergente con el texto "Copiado en el Portapapeles" y, a continuación, descartará la paleta.
De forma predeterminada, el asistente CommandResult.ShowToast(string) tendrá un resultado de CommandResult.Dismiss
. Sin embargo, puede cambiar el resultado a cualquiera de los otros resultados si lo desea. Esto le permite mostrar un mensaje emergente y mantener abierta la paleta, si lo desea.
Confirmar el resultado del comando
Este resultado muestra un cuadro de diálogo de confirmación al usuario. Si el usuario confirma el cuadro de diálogo, se llevará a cabo PrimaryCommand de ConfirmationArgs.
Esto es útil para los comandos que podrían tener acciones destructivas o que necesitan confirmar la intención del usuario.
Ejemplo
Por ejemplo, esta es una página con un comando para cada tipo de resultado de comando:
Nota:
Si trabaja desde la sección anterior, modifique el código siguiente de CommandResultsPage
a <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" },
];
}
}