Pratiques conseillées : conception et affichage des boîtes de dialogue
Lorsque vous concevez et affichez des boîtes de dialogue dans votre application cartographique, plusieurs facteurs sont à prendre en compte. Vous devez notamment vous demander comment afficher l'interface utilisateur, comment parvenir à une intégration homogène avec la structure existante de l'application, vous interroger sur le thème et la conception globale et vous demander si vous souhaitez que des actions soient effectuées lorsque la boîte de dialogue se ferme ou une fois qu'elle est fermée, par exemple supprimer une couche de la carte.
Affichage de l'interface utilisateur
Pour afficher l'élément d'interface utilisateur (boîte de dialogue) au sein de la visionneuse, l'API d'extensibilité offre deux méthodes : ShowWindow et HideWindow. Ces méthodes sont disponibles à partir de MapApplication.Current. La méthode MapApplication.Current.ShowWindow affiche les éléments FrameworkElement dans une boîte de dialogue flottante. Transmettez à la méthode ShowWindow l'objet que vous souhaitez afficher avec le titre de la boîte de dialogue sous forme de chaîne pour afficher une boîte de dialogue. La méthode ShowWindow peut également accepter une valeur booléenne pour déterminer si la boîte de dialogue est modale ou non, un gestionnaire d'événement qui est appelé lorsque la boîte de dialogue a commencé à se fermer et un deuxième gestionnaire d'événement qui est appelé lorsque la boîte de dialogue termine sa fermeture. Pour fermer la boîte de dialogue, transmettez le même élément FrameworkElement à la méthode MapApplication.Current.HideWindow.
Si vous implémentez une commande, affichez l'interface utilisateur dès que le bouton est activé (c'est-à-dire à l'exécution de la commande). Si votre commande nécessite que l'utilisateur interagisse avec la carte, l'interface utilisateur doit l'indiquer.
Lorsque vous utilisez ShowWindow, définissez l'arrière-plan de votre interface utilisateur comme transparent. La couleur d'arrière-plan de la boîte de dialogue contenant votre interface utilisateur est fonction des couleurs thématiques de l'application, qui sont elles-mêmes configurées par les utilisateurs qui conçoivent l'application.
Pour obtenir un exemple d'affichage de l'interface utilisateur Silverlight dans la visionneuse, supposons que vous avez implémenté le Contrôle utilisateur avec la classe code-behind par défaut et le langage XAML comme suit :
<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>
Un outil affichant ce contrôle dans une boîte de dialogue lors de son exécution serait implémenté comme suit :
[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;
}
Dans une visionneuse dont le thème est identique, la boîte de dialogue apparaît comme suit :
![]() |
Personnalisation de la mise en page
Personnalisez la mise en page pour ajouter des éléments d'interface utilisateur (des volets par exemple) à l'application, que vous ne souhaitez pas voir apparaître dans une boîte de dialogue flottante. Si l'élément d'interface utilisateur doit toujours être visible, incluez-le dans la mise en page. Pour permettre à l'utilisateur d'activer et de désactiver l'élément d'interface utilisateur, vous pouvez :
- inclure un bouton de fermeture ou un autre élément similaire dans l'interface utilisateur, qui définit la propriété Visibilité sur Réduit ;
- créer un outil (c'est-à-dire implémenter ICommand) qui trouve le contrôle à l'aide de MapApplication.Current.FindControlInLayout, puis qui définit sa propriété Visibilité sur Visible.

Comme les mises en page n'incluront pas nécessairement votre interface utilisateur, gérez le cas où FindControlInLayout renvoie la valeur Null.
Ne parcourez pas par programmation l'arborescence visuelle pour ajouter dynamiquement les éléments à l'application. Cette approche nécessite que l'arborescence visuelle soit structurée d'une manière précise, et est par conséquent fondamentalement fragile. Le code qui effectue cette opération s'interrompt d'une mise en page à l'autre et d'une version à l'autre.
Pour plus d'informations, reportez-vous à la rubrique Création d'une mise en page personnalisée et aux exemples de la section Contrôles des exemples interactifs d'ArcGIS Viewer for Silverlight.
Pinceaux
L'assembly d'extensibilité inclut un ensemble de pinceaux utilisés dans la visionneuse. Utilisez les pinceaux intégrés pour colorer votre interface utilisateur. Les couleurs de votre interface utilisateur sont ainsi cohérentes avec celles de l'application et les utilisateurs peuvent les configurer à travers les contrôles de thématiques.
Les pinceaux suivants sont disponibles :
- BackgroundGradientBrush : dans l'ensemble des mises en page par défaut, ce pinceau est utilisé comme la couleur d'arrière-plan principale. Il est utilisé comme arrière-plan des boîtes de dialogue et pour le volet latéral.
- BackgroundStartGradientStopColorBrush : fait référence à la couleur de début de BackgroundGradientBrush.
- BackgroundEndGradientStopColorBrush : fait référence à la couleur de fin de BackgroundGradientBrush.
- BackgroundTextColorBrush : destiné à être utilisé comme la couleur du texte qui est superposé sur les pinceaux d'arrière-plan.
- AccentColorBrush : dans l'ensemble des mises en page par défaut, cette couleur est utilisée pour contraster avec les couleurs d'arrière-plan. Cette couleur est utilisée, par exemple, dans les bordures, les barres de défilement et les boutons.
- AccentTextColorBrush : destiné à être utilisé comme la couleur du texte qui est superposé sur les pinceaux d'arrière-plan.
- SelectionColorBrush : ce pinceau est destiné à être utilisé comme la couleur des éléments sélectionnés. Cette couleur est utilisée, par exemple, pour mettre en surbrillance la couche sélectionnée dans Contenu de le carte.
- SelectionOutlineColorBrush : destiné à être utilisé en collaboration avec SelectionColorBrush pour souligner les sélections. Cette couleur est utilisée pour souligner la couche sélectionnée dans Contenu de le carte.
Actions lors de la fermeture de la boîte de dialogue
Pour initier une action lorsque la fenêtre affichée par votre complément se ferme, transmettez un gestionnaire d'événement au paramètre onHidingHandler et/ou onHideHandler de la méthode MapApplication.Current.ShowWindow.
- onHidingHandler : vous permet de réaliser une certaine logique avant la fermeture de la fenêtre et, si cela est nécessaire, annule l'opération de fermeture de la fenêtre. Vous pouvez utiliser ce paramètre, par exemple, si l'utilisateur ferme la fenêtre pendant une opération et que vous souhaitez lui demander s'il souhaite annuler l'opération.
- onHideHandler : permet de réaliser une certaine logique après la fermeture de la fenêtre. Vous pouvez utiliser ce paramètre, par exemple, pour supprimer une couche de résultats de la carte.