Crear un comportamiento de mapa

Los comportamientos de mapa proporcionan una manera simple de sacar a la superficie la funcionalidad en ArcGIS Viewer for Silverlight que siempre debe estar habilitada. Los comportamientos de mapa proporcionan funcionalidad sin la necesidad de la interacción del usuario. Si está desarrollando lógica para el visor que siempre debería ser iniciada cuando se carga el Visor, entonces la lógica debería ser abordada como un comportamiento. Los comportamientos se pueden utilizar, por ejemplo, para mantener el mapa en cierta extensión.

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

Los comportamientos que se desarrollan para utilizar con el Visor deben heredarse de System.Windows.Interactivity.Behavior<ESRI.ArcGIS.Client.Map>. La clase base del Comportamiento<T> proporciona unos cuantos miembros simples. En el contexto del Visor, estos miembros pueden entenderse como sigue:

Para hacer que un comportamiento esté disponible para agregarlo al Application Builder, debe agregar dos atributos a la clase de comportamiento. 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 Application Builder que el comportamiento debería estar disponible. Cuando lo incluye en un comportamiento que implementa, siempre adoptará la forma siguiente:

[Export(typeof(Behavior<Map>))]
public class MyBehavior : Behavior<Map>

El otro atributo requerido para agregar es ESRI.ArcGIS.Client.Extensibility.DisplayNameAttribute. Esto determina el nombre del comportamiento 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 y DescriptionAttribute. Los atributos se deben especificar como sigue:

[Export(typeof(Behavior<Map>))]
[DisplayName("Show Current Extent")]
[Category("My Behaviors")]
[Description("Shows a message box with the current extent when the extent changes")]
public class MyBehavior : Behavior<Map>

Un ejemplo de un comportamiento simple se muestra a continuación. El comportamiento agrega un controlador al evento ExtentChanged del mapa cuando el comportamiento está asociado al mapa y lo elimina cuando el comportamiento se desasoció. El comportamiento muestra un cuadro de mensaje con la extensión actual cuando cambia la extensión.

[Export(typeof(Behavior<Map>))]
[DisplayName("Simple Behavior")]
[Category("My Behaviors")]
[Description("Shows a message box with the current extent when the extent changes")]
public class MyBehavior : Behavior<Map>
{
     protected override void OnAttached()
     {
          base.OnAttached();
 
          // Add a handler to the map's ExtentChanged event.
          this.AssociatedObject.ExtentChanged += OnExtentChanged;
     }
 
     private void OnExtentChanged(object s, ExtentEventArgs args)
     {
          // Show a message box with the new extent.
          MessageBox.Show(this.AssociatedObject.Extent.ToString());
     }
 
     protected override void OnDetaching()
     {
          // Remove the handler from the map's ExtentChanged event.
          this.AssociatedObject.ExtentChanged -= OnExtentChanged;
     }
}
6/8/2012