Empfehlungen: Erstellen von konfigurierbaren Add-Ins

Konfigurierbarkeit von Werkzeugen und Verhalten

Mit der Extensibility API können Werkzeuge und Verhalten konfiguriert werden. Wenn ein Werkzeug oder Verhalten konfigurierbar ist, können Sie die Komponente beim Erstellen eines Viewers konfigurieren. Um die Konfiguration für ein Werkzeug oder Verhalten verfügbar zu machen, müssen Sie die Schnittstelle "ESRI.ArcGIS.Client.Extensibility.ISupportsConfiguration" implementieren. Für diese Schnittstelle müssen Sie die folgenden Methoden implementieren:

Ein Beispiel für ein konfigurierbares Werkzeug wäre die Implementierung einer einfachen UserControl, die den Standard-CodeBehind und ein Textfeld enthält. Die Spezifikation "Extensible Application Markup Language" (XAML) für dieses Steuerelement könnte folgendermaßen aussehen:

<UserControl x:Class="MyExtension.ConfigurationDialog"
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
     mc:Ignorable="d"
     d:DesignHeight="300" d:DesignWidth="400">
    <Grid x:Name="LayoutRoot" Background="Transparent">
        <StackPanel Margin="10" Background="Transparent">
            <TextBlock Text="Configuration Input:" Margin="0,0,0,5" />
            <TextBox Name="InputTextBox" Width="200" />
        </StackPanel>
    </Grid>
</UserControl>

Dieses Steuerelement könnte in einem einfachen konfigurierbaren Werkzeug folgendermaßen verwendet werden:

[Export(typeof(ICommand))]
[DisplayName("Configurable Command")]
[Category("My Tools")]
[Description("Example of a configurable command")]
[DefaultIcon(Path to icon, ex: "/Viewer.Addins;component/Images/Identify.png")]
public class ConfigurableCommand: ICommand, ISupportsConfiguration
    {
        private ConfigurationDialog configDialog = new ConfigurationDialog();

        #region ISupportsConfiguration Members

        public void Configure()
        {
            // When the dialog box opens, it shows the information saved from the last 
												//time the command was configured.
            MapApplication.Current.ShowWindow("Configuration", configDialog);
        }

        public void LoadConfiguration(string configData)
        {
            // If the saved configuration is not null, apply it to the configuration dialog box.
            configDialog.InputTextBox.Text = configData ?? "";
        }

        public string SaveConfiguration()
        {
            // Save the information from the dialog box, and 
            return configDialog.InputTextBox.Text;
     
        }

        #endregion

        #region ICommand Members

        public bool CanExecute(object parameter)
        {
            // Return true so that the command can always be executed.
            return true;
        }

        public event EventHandler CanExecuteChanged;

        public void Execute(object parameter)
        {
            // Show the configuration data. 
            MapApplication.Current.ShowWindow("Configuration", new TextBlock()
            {
                Text = configDialog.InputTextBox.Text,
                TextWrapping = TextWrapping.Wrap,
                Margin = new Thickness(30),
                MaxWidth = 480
            });
        }

        #endregion
    }

Wenn Sie im Dialogfeld "Werkzeug hinzufügen" auf "Konfigurieren" klicken, wird die Methode "Konfigurieren" des Werkzeugs aufgerufen. Bei der oben angezeigten Implementierung wird dabei folgendes Dialogfeld angezeigt:

Das Dialogfeld "Konfiguration"

Wenn der Viewer bereitgestellt oder gespeichert wird, wird der Text im Textfeld als Zeichenfolge gespeichert. Wenn der Viewer geladen wird, wird diese Zeichenfolge an die Methode "LoadConfiguration" übergeben und zum Initialisieren der Zeichenfolgenvariable für die Konfiguration verwendet. Durch das Ausführen des Befehls (durch Klicken auf die Schaltfläche des Befehls) wird ein Meldungsfeld mit der gespeicherten Konfigurationszeichenfolge angezeigt:

Dialogfeld mit gespeicherter Konfigurationszeichenfolge

1/23/2014