Mejores prácticas: Diseñar y mostrar cuadros de diálogo

Al diseñar y mostrar cuadros de diálogo en la aplicación de mapa, hay muchos factores a considerar como la forma de mostrar la interfaz de usuario (UI), el diseño y tema general, cómo lograr la integración sin problemas con el marco de aplicación actual, y si hay acciones que desea realizar a medida que se cierra el cuadro de diálogo o una vez que se ha cerrado, como la eliminación de una capa del mapa.

Visualizar la UI

Para visualizar la UI (cuadro de diálogo) dentro de la parte Web de mapas del, la interfaz de programación de aplicaciones (API) de extensibilidad proporciona dos métodos—Mostrar ventana y Ocultar ventana. Estos métodos están disponibles en MapApplication.Actual. El método MapApplication.Current.ShowWindow muestra cualquier Elemento del marco en una ventana de cuadro de diálogo flotante. Transmita el objeto que desea visualizar con el título del cuadro de diálogo como una cadena de caracteres al método Mostrar ventana para mostrar un cuadro de diálogo. El método Mostrar ventana acepta opcionalmente un valor booleano para determinar si el cuadro de diálogo es de modelos, un controlador de eventos que se invoca cuando el cuadro de diálogo ha empezado a cerrarse y un segundo controlador de eventos que se invoca cuando el cuadro de diálogo termina de cerrarse. Para cerrar el cuadro de diálogo, transmita el mismo Elemento de marco al método MapApplication.Current.HideWindow.

Si está implementando un comando, muestre la UI tan pronto como se hace clic en el botón (es decir, se ejecuta el comando). Si el comando requiere que el usuario interactúe con el mapa, la UI debe indicar esto.

Cuando utiliza Mostrar ventana, establezca el fondo de la UI para que sea transparente. El cuadro de diálogo que contiene la UI tendrá el color de fondo basado en los colores del tema de la aplicación, que a su vez, los pueden configurar los usuarios que están diseñando la aplicación.

Para ver un ejemplo de la visualización de la UI de Silverlight en la parte Web de mapas, supongamos que ha implementado el Control de usuario con el código predeterminado, detrás de la clase y el Lenguaje de marcado extensible (XAML) de la aplicación como sigue:

<UserControl x:Class="MyExtension.SimpleDialog"
     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">
          <TextBlock Text="This is my Silverlight UI!" Margin="20" />
     </Grid>
</UserControl>

Una herramienta que muestra este control en un cuadro de diálogo cuando se ejecuta la herramienta, se implementaría como sigue:

[Export(typeof(ICommand))]
[DisplayName("Show A Simple Dialog")]
[Category("My Tools")]
[Description("Tool to show a simple dialog")]
[DefaultIcon("<Insert path to icon>")]
public class ShowDialogCommand : ICommand
{
     private SimpleDialog dialog = null;
     public void Execute(object parameter)
     {
          // Instantiate a new dialog if one does not already exist.
          dialog = dialog ?? new SimpleDialog();
 
          // Display the dialog.
          MapApplication.Current.ShowWindow("Simple Dialog", dialog);
     }    
 
     public bool CanExecute(object parameter)
     {
          // Return true so that the command is always enabled.
          return true;
     }
 
     public event EventHandler CanExecuteChanged;
}

En la parte Web de mapas que tiene el tema predeterminado, este cuadro de diálogo aparece de la siguiente manera:

diálogo estándar del Visor

Personalización del diseño

Utilice la personalización del diseño para agregar la UI (por ejemplo, paneles) a la aplicación que no desea que aparezca en un cuadro de diálogo flotante. Si la UI siempre debería estar visible, inclúyala en el diseño. Para darle al usuario la capacidad de activar y desactivar la UI, puede:

  • Incluir un botón de cerrar o similar en la UI que establece la propiedad de Visibilidad a Contraído.
  • Cree una herramienta (es decir, implemente ICommand) que encuentre el control mediante MapApplication.Current.FindControlInLayout, luego establece la propiedad de Visibilidad a visible.
NotaNota:

Puesto que lo diseños no necesariamente incluirán la UI, asegúrese de controlar el caso cuando FindControlInLayout se devuelve nulo.

No camine de forma programada por el árbol visual para agregar dinámicamente elementos a la aplicación. Este enfoque requiere que el árbol visual se estructure de una manera determinada, y por lo tanto es inherentemente frágil. El código que hace esto puede romperse de diseño a diseño y de versión a versión.

Para obtener más información, consulte Crear un diseño personalizado y las muestras en la sección Controles de las muestras interactivas de ArcGIS Viewer for Silverlight .

Pinceles

El ensamblado de extensibilidad incluye un conjunto de pinceles que se utilizan en la parte Web de mapas. Utilice los pinceles integrados para darle color a la UI. Esto mantiene los colores de la UI coherentes con los de la aplicación y permite a los usuarios finales configurarlos mediante los colores del tema.

Los siguientes pinceles están disponibles:

Acciones al cerrar el cuadro de diálogo

Para iniciar una acción cuando se cierra una ventana mostrada por su add-in, transmita un controlador de eventos al parámetro onHidingHandler o onHideHandler del método Map.Application.Curent.ShowWindow.

6/8/2012