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:
- AssociatedObject: propiedad que proporciona una referencia del objeto al que se adjunta el comportamiento. En la extensión Parte Web de mapas, este será el objeto de mapa.
- OnAttached: método que se invoca cuando el comportamiento se adjunta a un objeto. Puede invalidar este método para realizar la lógica de inicialización. En el contexto de la Parte Web de mapas, esto ocurre cuando el comportamiento se adjunta al mapa. Esto ocurre en las siguientes situaciones:
- Cuando la parte Web se está cargando
- Cuando un usuario agrega o habilita el comportamiento a través del cuadro de diálogo Administrar comportamientos
- OnDetaching: método que se invoca cuando el comportamiento se desasocia de un objeto. Puede invalidar este método para realizar una lógica de limpieza como, por ejemplo, quitar los controladores de eventos. En el contexto de la Parte Web de mapas, este método se invoca cuando un usuario quita o deshabilita el comportamiento a través del cuadro de diálogo Administrar comportamientos.
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;
}
}