Empfehlungen: Entwerfen und Anzeigen von Dialogfeldern

Beim Entwerfen und Anzeigen von Dialogfeldern in der Kartenanwendung muss u. a. Folgendes berücksichtigt werden: wie die Benutzeroberfläche angezeigt werden soll, das Gesamtdesign, wie eine problemlose Integration in das vorhandene Anwendungs-Framework erzielt werden kann und ob beim Schließen oder nach dem Schließen des Dialogfeldes Aktionen, wie beispielsweise das Entfernen eines Layers aus der Karte, ausgeführt werden sollen.

Anzeigen der Benutzeroberfläche

Die Erweiterbarkeits-API (Application Programming Interface) stellt zwei Methoden zum Anzeigen der Benutzeroberfläche (Dialogfeld) im Viewer bereit – ShowWindow und HideWindow. Diese Methoden werden von MapApplication.Current zur Verfügung gestellt. Die Methode "MapApplication.Current.ShowWindow" zeigt jedes FrameworkElement in einem unverankerten Dialogfenster an. Übergeben Sie dazu einfach das anzuzeigende Objekt mit dem Titel des Dialogfelds an die Methode. Neben dem Inhalt und Titel des Dialogfelds akzeptiert die ShowWindow-Methode die folgenden optionalen Argumente:

Die ShowWindow-Methode gibt außerdem einen Verweis auf das angezeigte FloatingWindow zurück. Obwohl die Signatur der ShowWindow-Methode einen Rückgabeobjekttyp angibt, handelt es sich in Viewer und Application Builder zuverlässig um eine FloatingWindow-Instanz.

Wenn Sie einen Befehl implementieren, zeigen Sie die Benutzeroberfläche an, sobald auf die Schaltfläche geklickt wird (d. h. der Befehl wird ausgeführt). Wenn der Befehl die Interaktion des Benutzers mit der Karte erfordert, sollte die Benutzeroberfläche darauf hinweisen.

Wenn Sie "ShowWindow" verwenden, müssen Sie den Hintergrund der Benutzeroberfläche als transparent festlegen. Der Hintergrund des Dialogfeldes, das die Benutzeroberfläche enthält, basiert auf den Designfarben der Anwendung, die wiederum von Benutzern konfiguriert werden können, die die Anwendung entwerfen.

Ein Beispiel für die Anzeige der Benutzeroberfläche von Silverlight im Viewer wäre beispielsweise die folgende Implementierung der UserControl mit der Standard-CodeBehind-Klasse und der XAML (Extensible Application Markup Language):

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

Ein Werkzeug, das dieses Steuerelement in einem Dialogfeld anzeigt, wenn das Werkzeug ausgeführt wird, würde folgendermaßen implementiert:

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

In einem Viewer, der das Standarddesign aufweist, wird dieses Dialogfeld folgendermaßen angezeigt:

Standard-Dialogfeld für Viewer

Layout-Anpassung

Verwenden Sie die Layout-Anpassung, um der Anwendung eine Benutzeroberfläche (z. B. Fenster) hinzuzufügen, die nicht in einem unverankerten Dialogfenster angezeigt werden soll. Wenn die Benutzeroberfläche immer sichtbar sein soll, binden Sie sie in das Layout ein. Um dem Benutzer das Ein- und Ausschalten der Benutzeroberfläche zu ermöglichen, können Sie folgende Schritte ausführen:

  • Binden Sie beispielsweise eine Schließschaltfläche in die Benutzeroberfläche ein, die die Eigenschaft "Sichtbarkeit" auf "Ausgeblendet" festlegt.
  • Erstellen Sie ein Werkzeug (d. h. implementieren Sie "ICommand"), das das Steuerelement mit "MapApplication.Current.FindControlInLayout" findet und dann dessen Sichtbarkeitseigenschaft auf "Sichtbar" festlegt.
HinweisHinweis:

Da Layouts die Benutzeroberfläche nicht unbedingt einbinden, müssen Sie sicherstellen, dass Sie Situationen handhaben können, in denen "FindControlInLayout" den Wert NULL zurückgibt.

Gehen Sie nicht programmatisch durch die visuelle Struktur, um der Anwendung Elemente dynamisch hinzuzufügen. Dieser Ansatz erfordert einen besonderen Aufbau der visuellen Struktur und ist demnach brüchig. Code, der sich so verhält, kann von Layout zu Layout und von Version zu Version beschädigt werden.

Weitere Informationen finden Sie unter Erstellen eines benutzerdefinierten Layouts und in den Beispielen des Abschnitts "Steuerelemente" der interaktiven Beispielen von ArcGIS Viewer for Silverlight.

Pinsel

Die Assembly für die Erweiterbarkeit beinhaltet mehrere Pinsel, die im Viewer und in Application Builder verwendet werden. Verwenden Sie die integrierten Pinsel, um Ihrer Benutzeroberfläche Farbe zu verleihen. Dadurch stimmen die Farben Ihrer Benutzeroberfläche mit denen der Anwendung überein und Endbenutzer können sie über diese Designsteuerelemente konfigurieren.

Die folgenden Pinsel stehen zur Verfügung:

Viewer-Pinsel

Application Builder-Pinsel

Aktionen beim Schließen des Dialogfeldes

Um eine Aktion zu initiieren, wenn ein vom Add-In angezeigtes Fenster geschlossen wird, übergeben Sie einen Ereignishandler an den Parameter "onHidingHandler" und/oder "onHideHandler" der Methode "MapApplication.Current.ShowWindow".

1/23/2014