Mejores prácticas: Crear configurables agregar-in

Hacer de herramientas y comportamientos que se puede configurar

La API Extensibilidad de proporciona la capacidad de hacer que sus herramientas y comportamientos configurables. Si una herramienta se puede configurar o el comportamiento, puede configurar el componente al crear un visor. Para exponer de configuración en una herramienta o un comportamiento, debe aplicar la ESRI.ArcGIS.Cliente.Extensibilidad de.Interfaz de ISupportsConfiguration. Esto requiere que implemente la interfaz de los siguientes métodos:

Para ver un ejemplo de una herramienta configurables, supongamos que hemos aplicado un simple UserControl que contiene el código predeterminado, y un cuadro de texto. La Aplicación de Lenguaje de marcado extensible (XAML) para este control puede aparecer de la siguiente manera:

<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>

Este control se puede utilizar en una simple herramienta configurable como sigue:

[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
    }

Al hacer clic en Agregar herramienta Configurar en el cuadro de diálogo Configurar invoca el método de la herramienta. Con la aplicación dado anteriormente, esta muestra el siguiente cuadro de diálogo:

Cuadro de diálogo de configuración

Cuando el visor está desplegado o guardar, el texto en el cuadro de texto se almacena como una cadena de caracteres. Cuando el visor carga, esta cadena de caracteres se pasa al método LoadConfiguration y se utilizan para inicializar la cadena de caracteres de configuración de variable. Ejecutando la command—by haciendo clic en el comando button—displays un cuadro de mensaje que muestra la cadena de caracteres de configuración que se guardó:

con el cuadro de diálogo de cadena de caracteres de configuración que se guardó

6/8/2012