Pratiques conseillées : démarrage

ArcGIS Viewer for Silverlight inclut une API d'extensibilité qui permet aux développeurs d'accéder à la carte et à la couche sélectionnée, d'utiliser des méthodes visant à afficher l'interface utilisateur dans des boîtes de dialogue et de stocker et charger des données de configuration. L'API d'extensibilité est comprise dans le SDK d'extensibilité ArcGIS for Silverlight. Pour commencer, déterminez d'abord si vous allez créer un outil ou un comportement. Une fois que vous avez décidé du type de complément à créer, consultez la section Utilisation de la carte et de la couche sélectionnée suivante pour en savoir plus sur l'accès à la carte depuis votre complément.

Outils et comportements

Les outils permettent de facilement faire apparaître la logique devant être initiée par l'utilisateur. S'il semble logique que les fonctions que vous implémentez soient initiées en demandant à un utilisateur de cliquer sur un bouton de la barre d'outils, alors vous pouvez intégrer ces fonctions dans un outil. Un outil Identifier illustre par exemple une situation dans laquelle vous ajoutez un bouton à la barre d'outils pour l'utilisateur.

Les comportements de la carte permettent de facilement faire apparaître les fonctions 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 des fonctions afin d'ajouter une fonctionnalité ou une modification qui doit toujours être présente, elles peuvent alors être intégrées en tant que comportement de la carte. Les comportements de la carte peuvent être utilisés, par exemple, pour contraindre l'étendue de la carte, pour afficher les coordonnées de la souris sur le pointeur de la souris ou pour afficher une boîte de dialogue d'introduction lors du chargement de l'application.

Pour plus d'informations et pour obtenir des exemples, reportez-vous aux rubriques Création d'un outil et Création d'un comportement de la carte.

Utilisation de la carte et de la couche sélectionnée

Vous pouvez accéder à la carte et à la couche sélectionnée par le biais des propriétés de l'objet statique ESRI.ArcGIS.Client.Extensibility.MapApplication. L'objet MapApplication est disponible via la propriété MapApplication.Current. Pour accéder à l'objet de carte, utilisez MapApplication.Current.Map dans le code de votre complément. Pour accéder à la couche sélectionnée, utilisez MapApplication.Current.SelectedLayer. Le code correspondant à la commande simple dans la rubrique Création d'un outil décrit l'accès à la carte dans la méthode CanExecute. Le code suivant montre un exemple de commande simple, où l'ID de la couche sélectionnée apparaît lors de l'exécution de l'outil. La logique de la méthode CanExecute est telle que l'outil ne sera activé que si GraphicsLayer est sélectionné.

[Export(typeof(ICommand))]
[DisplayName("Show GraphicsLayer ID")]
[Category("My Tools")]
[Description("Shows the ID of the selected GraphicsLayer")]
[DefaultIcon("Path to icon, ex: "/Viewer.Addins;component/Images/Identify.png"")]
public class ShowGraphicsLayerIdCommand : ICommand
{
     public void Execute(object parameter)
     {
          // Show the selected layer's ID.
          MapApplication.Current.ShowWindow("Layer ID", new TextBlock()
            {
                Text = MapApplication.Current.SelectedLayer.ID,
                TextWrapping = TextWrapping.Wrap,
                Margin = new Thickness(30),
                MaxWidth = 480
            });
   
     }    
 
     public bool CanExecute(object parameter)
     {
          // Return true (that is, make the command executable) only if the selected layer is a GraphicsLayer.
          return MapApplication.Current.SelectedLayer is GraphicsLayer;
     }
 
     public event EventHandler CanExecuteChanged;
}
L'API d'extensibilité fournit un événement qui se déclenche lorsque la couche sélectionnée change, ainsi que des méthodes visant à récupérer et à définir les noms des couches. Les noms des couches permettent de les identifier dans le volet Configurer les couches. Le nom d'une couche est différent de son ID, car il a pour objectif d'être intuitif et de permettre l'identification de la couche à l'utilisateur final de la visionneuse, tandis que les ID sont destinés à identifier de façon unique une couche dans l'ensemble de couches de la carte, d'un point de vue programmatique. L'événement modifié de la couche sélectionnée est accessible via MapApplication.Current.SelectedLayerChanged. Les noms des couches peuvent être récupérés et définis par le biais des méthodes MapApplication.Current.GetLayerName et MapApplication.Current.SetLayerName. Le code suivant montre un comportement simple qui affiche le nom de la couche sélectionnée dans une fenêtre lorsque la couche sélectionnée change :

[Export(typeof(Behavior<Map>))]
[DisplayName("Show Selected Layer Name Behavior")]
[Category("My Behaviors")]
[Description("Shows a message box with the selected layer name")]
public class ShowSelectedLayerNameBehavior : Behavior<Map>
{
     protected override void OnAttached()
     {
          base.OnAttached();
 
          // Add a handler to the applications's SelectedLayerChanged event.
          MapApplication.Current.SelectedLayerChanged += ShowSelectedLayerName;
     }
 
     private void ShowSelectedLayerName(object s, EventArgs args)
     {
          // Show a message box with the selected layer name.
          string layerName = MapApplication.Current.SelectedLayer.GetValue(MapApplication.LayerNameProperty) as string;
          MapApplication.Current.ShowWindow("Layer Name", new TextBlock()
            {
                Text = layerName,
                TextWrapping = TextWrapping.Wrap,
                Margin = new Thickness(30),
                MaxWidth = 480
            });
     }
 
     protected override void OnDetaching()
     {
          // Remove the handler from the application's SelectedLayerChanged event.
          MapApplication.Current.SelectedLayerChanged -= ShowSelectedLayerName;
     }
}

1/23/2014