Escribir herramientas
Las herramientas proporcionan una manera simple de exponer la lógica en la Parte Web de mapas de ArcGIS que el usuario debe iniciar. Si cree conveniente que el usuario inicie la funcionalidad que está implementado al hacer clic en el botón de la cinta, debe encapsular esta funcionalidad en una herramienta.
La Parte Web de mapas expone comandos (herramientas) que implementan la interfaz ICommand. Esta interfaz proporciona algunos miembros simples. En el contexto de la Parte Web de mapas, estos miembros se utilizan de la siguiente manera:
- Ejecutar: se llama cuando se hace clic en el botón de la cinta correspondiente al comando.
- CanExecute: se llama con frecuencia cuando la Parte Web de mapas comprueba si el comando está en un estado donde se puede ejecutar. Cuando este método se devuelve como verdadero, se habilita el botón correspondiente en la cinta. Cuando el método se devuelve como falso, el botón no está disponible.
- CanExecuteChanged: evento que puede ocurrir cuando cambia la ejecutabilidad del comando. Cuando ocurre este evento, la Parte Web de mapas invoca el método CanExecute, permitiendo que la extensión actualice el estado del botón del comando en la cinta.
Además de implementar esos miembros, debe agregar dos atributos a la clase que implementa ICommand. El primero es System.ComponentModel.Composition.ExportAttribute, que está incluido en el ensamblado System.ComponentModel.Composition que se proporciona como parte de Microsoft Managed Extensibility Framework (MEF). Este atributo informa a la Parte Web de mapas que el comando debe estar habilitado para poder agregarlo a la cinta. Cuando lo incluye en un comando que implementa, este siempre adoptará la siguiente forma:
[Export(typeof(ICommand))]
public class MyCommand : ICommand
El otro atributo que se agregará es ESRI.ArcGIS.Client.Extensibility.DisplayNameAttribute. Esto determina el nombre del comando como le aparece a un diseñador cuando lo agrega a la Parte Web de mapas. Este atributo se debe especificar de la siguiente forma:
[Export(typeof(ICommand))]
[DisplayName("<Name to display>")]
public class MyCommand : ICommand
En el siguiente código se muestra un ejemplo de un comando simple. El comando muestra un cuadro de mensaje y se activa cuando el mapa no es nulo. En este caso, no se utiliza el evento CanExecuteChanged.
[Export(typeof(ICommand))]
[DisplayName("Simple Command")]
public class SimpleCommand : ICommand
{
public void Execute(object parameter)
{
// Show a message box when the command's ribbon button is clicked.
MessageBox.Show("Simple command executed");
}
public bool CanExecute(object parameter)
{
// Show as executable (i.e., enable the button on the ribbon) unless the map is null.
return MapApplication.Current.Map != null;
}
public event EventHandler CanExecuteChanged;
}