Création d'un outil

Les outils permettent de facilement faire apparaître la logique dans ArcGIS Viewer for Silverlight devant être initiée par l'utilisateur. S'il semble logique que les fonctions que vous implémentez soient initiées en cliquant sur un bouton de la barre d'outils, alors vous pouvez intégrer les fonctions dans un outil.

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

La visionneuse permet de présenter les objets qui implémentent l'interface ICommand en tant qu'outils. Cette interface fournit quelques membres simples. Dans le contexte de la visionneuse, ces membres sont utilisés comme suit :

Outre l'implémentation de ces membres, vous devez également ajouter deux attributs à la classe qui implémente ICommand. 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 la visionneuse que l'outil doit être disponible pour être ajouté à la barre d'outils. Lorsque vous l'incluez dans un outil que vous implémentez, il prend toujours la forme suivante :

[Export(typeof(ICommand))]
public class MyCommand : ICommand

L'autre attribut qui doit être ajouté est ESRI.ArcGIS.Client.Extensibility.DisplayNameAttribute. Il détermine le nom de l'outil, 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, DefaultIconAttribute et DescriptionAttribute. Les attributs doivent être spécifiés comme suit :

[Export(typeof(ICommand))]
[DisplayName("Simple Command")]
[Category("My Tools")]
[Description("Simple tool with MessageBox")]
[DefaultIcon("Path to icon, ex: "/Viewer.Addins;component/Images/SimpleTool.png"")]
public class MyCommand : ICommand

Vous trouverez ci-dessous un exemple de commande simple. L'outil affiche un message et est activé lorsque la carte n'a pas la valeur Null. Dans ce cas, l'événement CanExecuteChanged n'est pas utilisé.

[Export(typeof(ICommand))]
[DisplayName("Simple Command")]
[Category("My Tools")]
[Description("Simple tool with MessageBox")]
[DefaultIcon("Path to icon, ex: "/Viewer.Addins;component/Images/SimpleTool.png"")]
public class MyCommand : ICommand
{
     public void Execute(object parameter)
     {
          // Show a message box when the tool's button is clicked.
          MessageBox.Show("Simple tool executed");
     } 
 
     public bool CanExecute(object parameter)
     {
          // Show as executable (i.e., enable the button on the toolbar) unless the map is null.
          return MapApplication.Current.Map != null;
     }
 
     public event EventHandler CanExecuteChanged;
}

1/23/2014