Når du designer og viser dialogbokser i kartprogrammet ditt, er det mange faktorer du må ta hensyn til, for eksempel hvordan brukergrensesnittet (UI) skal se ut, den generelle designen og temaet, hvordan du kan oppnå en problemfri integrasjon med det eksisterende programrammeverket, og om det er handlinger du ønsker skal utføres når dialogboksen lukkes eller har blitt lukket, for eksempel fjerne et lag fra kartet.
Når du skal vise UI-et (dialogboksen) i Map-webdelen, gir API-et (Application Programming Interface) for utvidbarhet deg to metoder: ShowWindow og HideWindow. Disse metodene er tilgjengelige fra MapApplication.Current. Metoden MapApplication.Current.ShowWindow viser et FrameworkElement i en flytende dialogboks. Send objektet du ønsker skal vises, sammen med tittelen på dialogboksen, som en streng til ShowWindow-metoden for å vise en dialogboks. ShowWindow-metoden godtar alternativt en boolsk operator for å fastsette hvorvidt dialogboksen er modal (sperrende), en hendelsesbehandling som kalles opp når dialogboksen har begynt å lukke seg, og en hendelsesbehandling til som kalles opp når dialogboksen har lukket seg. Send samme FrameworkElement til MapApplication.Current.HideWindow-metoden for å lukke dialogboksen.
Hvis du implementerer en kommando, gjør du slik at UI-et vises like etter at det klikkes på knappen (det vil si etter at kommandoen er utført). Hvis kommandoen krever at brukeren gjør noe på kartet, bør dette indikeres gjennom UI-et.
Når du bruker ShowWindow, setter du bakgrunnen av UI-et til å være gjennomsiktig. Dialogboksen med UI-et baserer bakgrunnsfargen på programmets temafarger, som kan konfigureres av brukere som designer programmet.
For å nevne et eksempel med visning av Silverlight-UI-et i ArcGIS Map-webdelen: La oss si at du har implementert UserControl med standardklassen med bakenforliggende kode og XAML (Extensible Application Markup Language) som følger:<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>
Et verktøy som viser denne kontrollen i en dialogboks når verktøyet kjøres, ville blitt implementert på denne måten:[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;
}
I en Map-webdel med standardtemaet vises denne dialogboksen som følger:
Bruk tilpasning av oppsett for å legge til UI (for eksempel paneler) i programmet som du ikke vil skal vises i en flytende dialogboks. Hvis UI-et alltid skal være synlig, tar du det med i oppsettet. Hvis du vil gi brukeren muligheten til å slå UI-et på og av, kan du gjøre følgende:
Du må ikke traversere det visuelle treet programmatisk for å legge til elementer i programmet dynamisk. Dette krever nemlig at det visuelle treet er strukturert på en bestemt måte, og er derfor i seg selv skjørt. Kode som gjør dette, kan blir ødelagt fra oppsett til oppsett og utgivelse til utgivelse.
Extensibility-settet inneholder et sett med pensler som brukes med ArcGIS Map-webdelen. Bruk de innebygde penslene til å sette farge på UI-et. Dette gjør at du får samme farger på UI-et som i programmet og gjør at sluttbrukeren kan konfigurere dem gjennom temakontrollene.
Følgende pensler er tilgjengelig:
For å igangsette en handling når et vindu som vises av tilleggsprogrammet, lukkes, sender du en hendelsesbehandling til parameteren onHidingHandler eller onHideHandler i MapApplication.Current.ShowWindow-metoden.