Создание инструмента
Инструменты предоставляют простой путь для интерпретации логики пользователя в ArcGIS Viewer for Silverlight. Если необходимо, чтобы функциональность, разрабатываемая вами, запускалась нажатием на кнопку на панели инструментов, вам нужно встроить эту функциональность в инструмент.
Дополнительные сведения смотрите в разделе Практические советы: Начало работы и Расширение возможностей ArcGIS Viewer for Silverlight.
Вьюер разрешает использование объектов, которые соответствуют интерфейсу ICommand, в качестве инструментов. Этот интерфейс содержит несколько простых элементов. В контексте вьюера, эти элементы используются так:
- Execute – выполняется при щелчке на кнопке, связанной с инструментом.
- CanExecute – часто вызывается Viewer для проверки состояния инструмента, чтобы определить, где он может быть выполнен. Если этот метод возвращает значение true, соответствующая кнопка будет активной. Если этот метод возвращает значение false, соответствующая кнопка будет неактивной.
- CanExecuteChanged – событие, которое может произойти при изменении возможности выполнения команды. Когда это событие происходит, вьюер использует метод CanExecute, позволяя дополнительному модулю обновить статус кнопки инструмента на панели.
Кроме того, для выполнения этих элементов необходимо добавить два атрибута в класс, который обеспечивает работу 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;
}