Skrive virkemåter for kart

Kartvirkemåter gir deg et middel til å eksponere funksjonalitet i ArcGIS Map-webdelen som alltid skal være aktivert. Hvis du utvikler funksjonalitet for å legge til en egenskap eller endring i Map-webdelen som alltid skal være til stede, bør den være innkapslet som en kartvirkemåte. Kartvirkemåter kan for eksempel brukes til å holde kartet innenfor en viss utstrekning eller gjøre tilgjengelig en meldingstjeneste i JavaScript eller Silverlight.

Virkemåter som er utviklet for bruk med kartwebdelen, må arve fra System.Windows.Interactivity.Behavior<ESRI.ArcGIS.Client.Map>. Behavior<T> base-klassen har flere medlemmer. I en kartwebdelkontekst brukes disse medlemmene som følger:

  • AssociatedObject – Egenskap som henviser til objektet som virkemåten er tilknyttet. I tilleggsprogrammet til kartwebdelen vil dette være kartobjektet.
  • OnAttached – Metode som tas i bruk når virkemåten tilknyttes et objekt. Du bør overstyre denne metoden for å utføre initialiseringslogikk. I en kartwebdelkontekst skjer dette når virkemåten er knyttet til kartet. Dette forekommer i følgende scenarioer:
    • Når webdelen lastes inn
    • Når en bruker legger til eller aktiverer virkemåten via dialogboksen Administrer virkemåter
  • OnDetaching – Metode som tas i bruk når virkemåten skal tas fra et objekt. Du bør overstyre denne metoden for å utføre oppryddingslogikk, for eksempel fjerne hendelsesbehandlinger. I en kartwebdelkontekst tas denne metoden i bruk når en bruker fjerner eller deaktiverer virkemåten via dialogboksen Administrer virkemåter.

For å gjøre en virkemåte tilgjengelig så designere kan legge den til kartwebdelen, må du legge til to attributter i virkemåteklassen. Det første er System.ComponentModel.Composition.ExportAttribute, som er inkludert i samlingen System.ComponentModel.Composition som inngår i Microsoft Managed Extensibility Framework (MEF). Dette attributtet informerer kartwebdelen om at virkemåten bør gjøres tilgjengelig. Når du inkluderer det i en virkemåte du implementerer, tar det alltid følgende form: Eksportattributt.

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

Det andre attributtet som skal legges til, er ESRI.ArcGIS.Client.Extensibility.DisplayNameAttribute. Dette bestemmer navnet på virkemåten slik det vises for en designer som skal legge det til i kartwebdelen. Dette attributtet skal angis som følger:

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

Et eksempel på en enkel virkemåte er vist i følgende kode. Virkemåten legger til en behandling i kartets ExtentChanged-hendelse når virkemåten knyttes til kartet, og fjerner den når virkemåten tas bort. Virkemåten viser en meldingsboks med gjeldende utstrekning når utstrekningen endres.

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