Erstellen eines Werkzeugs

Mit Werkzeugen kann vom Benutzer zu initiierende Logik auf einfache Weise auf der Oberfläche in ArcGIS Viewer for Silverlight verankert werden. Wenn die Funktionalität, die Sie implementieren, durch Klicken auf eine Schaltfläche auf der Werkzeugleiste vom Benutzer initiiert werden soll, sollte diese Funktionalität in ein Werkzeug gekapselt werden.

Weitere Informationen finden Sie unter Empfehlungen: Erste Schritte und Erweitern von ArcGIS Viewer for Silverlight.

Der Viewer ermöglicht die Verankerung von Objekten zum Implementieren der Schnittstelle ICommand als Werkzeuge auf der Oberfläche. Diese Schnittstelle stellt einige einfache Mitglieder bereit. Beim Viewer werden diese Mitglieder folgendermaßen verwendet:

Zusätzlich zur Implementierung dieser Mitglieder müssen Sie der Klasse, die ICommand implementiert, zwei Attribute hinzufügen. Dabei handelt es sich erstens um das Attribut "System.ComponentModel.Composition.ExportAttribute", das in der Assembly System.ComponentModel.Composition im Rahmen des Microsoft Managed Extensibility Framework (MEF) bereitgestellt wird. Dieses Attribut informiert den Viewer, dass das Werkzeug zum Hinzufügen zur Werkzeugleiste zur Verfügung gestellt werden soll. Wenn es für ein Werkzeug verwendet werden soll, das Sie implementieren, hat es immer dieses Format:

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

Bei dem anderen Attribut, das hinzugefügt werden muss, handelt es sich um das Attribut "ESRI.ArcGIS.Client.Extensibility.DisplayNameAttribute". Hierdurch wird der Name des Werkzeugs so festgelegt, wie er dem Designer beim Hinzufügen zum Viewer angezeigt wird. Die Attribute "CategoryAttribute", "DefaultIconAttribute" und "DescriptionAttribute" gehören zu den zusätzlichen optionalen Attributen, die über die Assembly "ESRI.ArcGIS.Client.Extensibility" festgelegt werden können. Die Attribute sollten folgendermaßen angegeben werden:

[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

Ein Beispiel für einen einfachen Befehl wird unten dargestellt. Das Werkzeug zeigt ein Meldungsfeld an und wird aktiviert, wenn die Karte nicht NULL ist. In diesem Fall wird das Ereignis "CanExecuteChanged" nicht verwendet.

[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