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:

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;
}

6/8/2012