マップ ビヘイビアーの作成

マップ ビヘイビアーを使用すると、Map Web パーツで常に有効にする機能を簡単に実装できます。Map Web パーツに追加する機能や、Map Web パーツに対する変更を常に有効にする場合は、それらをマップ ビヘイビアーとしてカプセル化します。たとえば、マップの特定の範囲を表示したり、JavaScript または Silverlight メッセージでメソッドを実行したりする場合にマップ ビヘイビアーを使用します。

Map Web パーツ用として開発するビヘイビアーは、System.Windows.Interactivity.Behavior<ESRI.ArcGIS.Client.Map> を継承する必要があります。Behavior<T> 基本クラスはいくつかのシンプルなメンバーで構成されます。Map Web パーツでは、これらのメンバーを次のように使用します。

デザイン担当者がビヘイビアーを Map Web パーツへ追加できるようにするには、ビヘイビアー クラスに 2 つの属性を追加する必要があります。その 1 つは System.ComponentModel.Composition.ExportAttribute です。この属性は、Managed Extensibility Framework(MEF)を構成する System.ComponentModel.Composition アセンブリに含まれています。この属性は、ビヘイビアーを使用可能にする必要があることを Map Web パーツに通知します。実装するビヘイビアーにこの属性を追加する場合、必ず次の形式をとります。

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

追加するもう 1 つの属性は ESRI.ArcGIS.Client.Extensibility.DisplayNameAttribute です。この属性は、デザイン担当者が対象ビヘイビアーを Map Web パーツへ追加するときに表示される名前を指定します。この属性は次のように指定します。

[Export(typeof(Behavior<Map>))]
[DisplayName("<Name to display>")]
public class MyBehavior : Behavior<Map>

次に、単純なビヘイビアーのコード例を示します。ここでは、ビヘイビアーがマップにアタッチされた時点で、そのマップの ExtentChanged イベントにハンドラを追加し、ビヘイビアーがデタッチされた時点でハンドラを削除します。さらに、範囲が変更されたとき、現在の範囲を示すメッセージ ボックスを表示します。

[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