Escribir los comportamientos de mapas

Los comportamientos de mapas proporcionan una manera simple de exponer la funcionalidad en la Parte Web de mapas que siempre debe estar habilitada. Si está desarrollando una funcionalidad para agregar una capacidad o modificación a la Parte Web de mapas que siempre debe estar presente, debe encapsularla como un comportamiento de mapa. Los comportamientos de mapas se pueden utilizar, por ejemplo, para mantener el mapa en determinada extensión o exponer un método externo para mensajes de JavaScript o Silverlight.

Los comportamientos que se desarrollan para utilizarlos con la Parte Web de mapas se deben heredar de System.Windows.Interactivity.Behavior<ESRI.ArcGIS.Client.Map>. La clase base Comportamiento<T> proporciona algunos miembros simples. En el contexto de la Parte Web de mapas, estos miembros se utilizan de la siguiente manera:

Para habilitar un comportamiento para que los diseñadores lo agreguen a la Parte Web de mapas, debe agregar dos atributos a la clase de comportamiento. 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 se debe habilitar el comportamiento. Cuando lo incluye en un comportamiento que implementa, este siempre adoptará la siguiente forma: Exportar atributo.

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

El otro atributo que se agregará es ESRI.ArcGIS.Client.Extensibility.DisplayNameAttribute. Esto determina el nombre del comportamiento 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(Behavior<Map>))]
[DisplayName("<Name to display>")]
public class MyBehavior : Behavior<Map>

En el siguiente código se muestra un ejemplo de un comportamiento simple. El comportamiento agrega un controlador al evento ExtentChanged del mapa cuando se adjunta el comportamiento al mapa y se quita cuando se desasocia. El comportamiento muestra un cuadro de mensaje con la extensión actual cuando se cambia la extensión.

[Export(typeof(Behavior<Map>))]
[DisplayName("Simple Behavior")]
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(sender 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