Crear una herramienta

Las herramientas proporcionan una manera simple de sacar a la superficie la lógica en ArcGIS Viewer for Silverlight que debería ser puesta en marcha por el usuario. Si tiene sentido que la funcionalidad que está implementando se inicie al hacer clic en un botón en la barra de herramientas, entonces debería encapsular la funcionalidad en una herramienta.

Consulte Mejores prácticas: Introducción y Extensión de ArcGIS Viewer for Silverlight para obtener más información.

El Visor permite sacar a la superficie objetos que implementan la interfaz ICommand como herramientas. Esta interfaz proporciona unos cuantos miembros simples. En el contexto del Visor, estos miembros se utilizan como sigue:

Además de la implementación de estos miembros, también debe agregar dos atributos a la clase que implementa ICommand. La primera es System.ComponentModel.Composición.ExportAttribute, que se incluye en el ensamblado System.ComponentModel.Composición que se proporciona como parte del Marco de extensibilidad administradoa (MEF) de Microsoft. Este atributo informa al Visor que la herramienta debería estar disponible para agregarla a la barra de herramientas. Cuando la incluyen en una herramienta que implementa, siempre adoptará la forma siguiente:

[Export(typeof(ICommand))]
public class MyCommand : ICommand

El otro atributo requerido para agregar es ESRI.ArcGIS.Client.Extensibility.DisplayNameAttribute. Esto determina el nombre de la herramienta como le aparece al diseñador al agregarlo al Visor. Los atributos adicionales opcionales que puede especificar desde el ensamblado ESRI.ArcGIS.Client.Extensibility incluyen CategoryAttribute, DefaultIconAttribute y DescriptionAttribute. Los atributos se deben especificar como sigue:

[Export(typeof(ICommand))]
[DisplayName("Simple Command")]
[Category("My Tools")]
[Description("Simple tool with MessageBox")]
[DefaultIcon("Path to icon, ex: "/Viewer.Addins;component/Images/SimpleTool.png"")]
public class MyCommand : ICommand

Un ejemplo de un comando simple se muestra a continuación. La herramienta muestra un cuadro de mensaje y se habilita cuando el mapa no es nulo. En este caso, el evento CanExecuteChanged no se utiliza.

[Export(typeof(ICommand))]
[DisplayName("Simple Command")]
[Category("My Tools")]
[Description("Simple tool with MessageBox")]
[DefaultIcon("Path to icon, ex: "/Viewer.Addins;component/Images/SimpleTool.png"")]
public class MyCommand : ICommand
{
     public void Execute(object parameter)
     {
          // Show a message box when the tool's button is clicked.
          MessageBox.Show("Simple tool executed");
     } 
 
     public bool CanExecute(object parameter)
     {
          // Show as executable (i.e., enable the button on the toolbar) unless the map is null.
          return MapApplication.Current.Map != null;
     }
 
     public event EventHandler CanExecuteChanged;
}

6/8/2012