Création d'un comportement de la carte

Les comportements de la carte permettent de facilement faire apparaître les fonctions dans ArcGIS Viewer for Silverlight qui doivent rester activées en permanence. Les comportements de la carte offrent des fonctions qui ne requièrent pas l'interaction de l'utilisateur. Si vous développez une certaine logique qui doit toujours être initiée à chaque chargement de la visionneuse, la logique doit alors être intégrée en tant que comportement. Les comportements peuvent être utilisés, par exemple, pour conserver une certaine étendue de la carte.

Reportez-vous à la rubrique Pratiques conseillées : démarrage et Extension d'ArcGIS Viewer for Silverlight pour plus d'informations.

Les comportements qui sont développés pour être utilisés avec la visionneuse doivent hériter de System.Windows.Interactivity.Behavior<ESRI.ArcGIS.Client.Map>. La classe de base Behavior<T> fournit quelques membres simples. Dans le contexte de la visionneuse, ces membres peuvent être compris comme suit :

Pour qu'un comportement puisse être ajouté à Application Builder, vous devez ajouter deux attributs à la classe de votre comportement. Le premier est System.ComponentModel.Composition.ExportAttribute, qui est inclus dans l'assembly System.ComponentModel.Composition dans le cadre du Managed Extensibility Framework (MEF) de Microsoft. Cet attribut informe Application Builder que le comportement doit être disponible. Lorsque vous l'incluez dans un comportement que vous implémentez, il prend toujours la forme suivante :

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

L'autre attribut qui doit être ajouté est ESRI.ArcGIS.Client.Extensibility.DisplayNameAttribute. Il détermine le nom du comportement, tel qu'il apparaît à un concepteur lorsqu'il l'ajoute à la visionneuse. Parmi les autres attributs facultatifs que vous pouvez spécifier à partir de l'assembly ESRI.ArcGIS.Client.Extensibility figurent CategoryAttribute et DescriptionAttribute. Les attributs doivent être spécifiés comme suit :

[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>

Vous trouverez ci-dessous un exemple de comportement simple. Le comportement ajoute un gestionnaire à l'événement ExtentChanged de la carte lorsqu'il est associé à la carte et le supprime lorsqu'il est dissocié. Le comportement affiche un message indiquant l'étendue courante lorsqu'elle change.

[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;
     }
}
1/23/2014