Crear una herramienta

Las herramientas ofrecen una manera sencilla de mostrar la lógica de ArcGIS Viewer for Silverlight que debería iniciar 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 más información en Mejores prácticas: Introducción y en Extender ArcGIS Viewer for Silverlight.

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

Además de implementar esos miembros, 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 administrado (MEF). 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, no se utiliza el evento CanExecuteChanged.

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

1/23/2014