Map behaviors provide a simple way to surface functionality in the Map Web Part that should always be enabled. If you are developing functionality to add a capability or modification to the Map Web Part that should always be present, then this should be encapsulated as a map behavior. Map behaviors can be used, for instance, to keep the map at a certain extent or expose a method externally to JavaScript or Silverilght messaging.
Behaviors that are developed for use with the Map Web Part must inherit from System.Windows.Interactivity.Behavior<ESRI.ArcGIS.Client.Map>. The Behavior<T> base class provides a few simple members. In the context of the Map Web Part, these members can be understood as follows:
-
AssociatedObject - property that provides a reference to the object that the behavior is attached to. In your Map Web Part extension, this will be the map object.
-
OnAttached - method that is invoked when the behavior is attached to an object. You should override this method to perform initialization logic. In the context of the Map Web Part, this occurs when the behavior is attached to the map. This occurs:
-
When the web part is loading.
-
When a user adds or enables the behavior via the Manage Behaviors dialog.
-
-
OnDetaching - method that is invoked when the behavior is being detached from an object. You should override this method to perform cleanup logic such as removing event handlers. In the context of the Map Web Part, this method is invoked when a user removes or disables the behavior via the Manage Behaviors dialog.
To make a behavior available for designers to add to the Map Web Part, you must add two attributes your behavior class. The first is System.ComponentModel.Composition.ExportAttribute, which is included in the System.ComponentModel.Composition assembly provided as part of Microsoft's Managed Extensibility Framework (MEF). This attribute informs the Map Web Part that the behavior should be made available. When you include it on a behavior you implement, it will always take the following form:
| Export Attribute | Copy Code |
|---|---|
[Export(typeof(Behavior<Map>))] public class MyBehavior : Behavior<Map> | |
The other attribute to add is ESRI.ArcGIS.Client.Extensibility.DisplayNameAttribute. This determines the name of the behavior as it appears to a designer when adding it to the Map Web Part. This attribute should be specified as follows:
| DisplayName Attribute | Copy Code |
|---|---|
[Export(typeof(Behavior<Map>))] [DisplayName("<Name to display>")] public class MyBehavior : Behavior<Map> | |
An example of a simple behavior is shown below. The behavior adds a handler to the map's ExtentChanged event when the behavior is attached to the map and removes it when the behavior is detached. The behavior simply shows a message box with the current extent when the extent changes.
| Simple Behavior | Copy Code |
|---|---|
[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; } } | |