Создание инструмента

Инструменты предоставляют простой путь для интерпретации логики пользователя в ArcGIS Viewer for Silverlight. Если необходимо, чтобы функциональность, разрабатываемая вами, запускалась нажатием на кнопку на панели инструментов, вам нужно встроить эту функциональность в инструмент.

Дополнительные сведения смотрите в разделе Практические советы: Начало работы и Расширение возможностей ArcGIS Viewer for Silverlight.

Вьюер разрешает использование объектов, которые соответствуют интерфейсу ICommand, в качестве инструментов. Этот интерфейс содержит несколько простых элементов. В контексте вьюера, эти элементы используются так:

Кроме того, для выполнения этих элементов необходимо добавить два атрибута в класс, который обеспечивает работу ICommand. Первый –System.ComponentModel.Composition.ExportAttribute, который входит в сборку System.ComponentModel.Composition, поставляемую Microsoft как часть Managed Extensibility Framework (MEF). Этот атрибут сообщает вьюеру, что инструмент должен стать доступным для добавления на панель инструментов. Когда вы включаете его в используемый инструмент, он всегда принимает следующую форму:

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

Второй необходимый атрибут – это ESRI.ArcGIS.Client.Extensibility.DisplayNameAttribute. Он определяет имя инструмента, как оно отображается для разработчика при добавлении во вьюер. Другие дополнительные атрибуты, которые можно задать из сборки ESRI.ArcGIS.Client.Extensibility, включают CategoryAttribute, DefaultIconAttribute и DescriptionAttribute. Эти атрибуты должны быть заданы следующим образом:

[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

Пример простой команды показан ниже. Инструмент отображает сообщение и становится активным, когда карта не является пустой. В этом случае событие CanExecuteChanged не используется.

[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