Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort zur 6. Auflage
1 Allgemeine Einführung in .NET
2 Grundlagen der Sprache C#
3 Das Klassendesign
4 Vererbung, Polymorphie und Interfaces
5 Delegates und Ereignisse
6 Strukturen und Enumerationen
7 Fehlerbehandlung und Debugging
8 Auflistungsklassen (Collections)
9 Generics – Generische Datentypen
10 Weitere C#-Sprachfeatures
11 LINQ
12 Arbeiten mit Dateien und Streams
13 Binäre Serialisierung
14 XML
15 Multithreading und die Task Parallel Library (TPL)
16 Einige wichtige .NET-Klassen
17 Projektmanagement und Visual Studio 2012
18 Einführung in die WPF und XAML
19 WPF-Layout-Container
20 Fenster in der WPF
21 WPF-Steuerelemente
22 Elementbindungen
23 Konzepte von WPF
24 Datenbindung
25 Weitere Möglichkeiten der Datenbindung
26 Dependency Properties
27 Ereignisse in der WPF
28 WPF-Commands
29 Benutzerdefinierte Controls
30 2D-Grafik
31 ADO.NET – Verbindungsorientierte Objekte
32 ADO.NET – Das Command-Objekt
33 ADO.NET – Der SqlDataAdapter
34 ADO.NET – Daten im lokalen Speicher
35 ADO.NET – Aktualisieren der Datenbank
36 Stark typisierte DataSets
37 Einführung in das ADO.NET Entity Framework
38 Datenabfragen des Entity Data Models (EDM)
39 Entitätsaktualisierung und Zustandsverwaltung
40 Konflikte behandeln
41 Plain Old CLR Objects (POCOs)
Stichwort

Download:
- Beispiele, ca. 62,4 MB

Buch bestellen
Ihre Meinung?

Spacer
Visual C# 2012 von Andreas Kühnel
Das umfassende Handbuch
Buch: Visual C# 2012

Visual C# 2012
Rheinwerk Computing
1402 S., 6., aktualisierte und erweiterte Auflage 2013, geb., mit DVD
49,90 Euro, ISBN 978-3-8362-1997-6
Pfeil 20 Fenster in der WPF
Pfeil 20.1 Hosts der WPF
Pfeil 20.2 Fenster vom Typ »Window«
Pfeil 20.2.1 Mehrere Fenster in einer Anwendung
Pfeil 20.3 Fenster vom Typ »NavigationWindow«
Pfeil 20.3.1 Das »Page«-Element
Pfeil 20.4 Hosts vom Typ »Frame«
Pfeil 20.5 Navigation zwischen den Seiten
Pfeil 20.5.1 Navigation mit »HyperLink«
Pfeil 20.5.2 Der Verlauf der Navigation – das Journal
Pfeil 20.5.3 Navigation mit »NavigationService«
Pfeil 20.5.4 Navigation im Internet
Pfeil 20.5.5 Navigieren mit dem Ereignis »RequestNavigate« des »HyperLink«-Elements
Pfeil 20.6 Datenübergabe zwischen den Seiten
Pfeil 20.6.1 Datenübergabe mit der Methode »Navigate«
Pfeil 20.7 Nachrichtenfenster mit »MessageBox«
Pfeil 20.7.1 Die Methode »MessageBox.Show«

Galileo Computing - Zum Seitenanfang

20.2 Fenster vom Typ »Window«Zur nächsten Überschrift

Mit der Klasse Window wird ein Fenster beschrieben, also das wohl wichtigste Element einer klassischen Windows-Anwendung. Ein Window ist ein Container für alle darin enthaltenen Steuerelemente. Da Window direkt von ContentControl abgeleitet ist, besitzt diese Klasse eine Content-Eigenschaft, die aber nicht explizit angegeben werden muss. Die Content-Eigenschaft kann genau ein Element aufnehmen, das im Fall des Window praktisch immer ein Layout-Container sein dürfte.

Mit der Eigenschaft Title wird der Inhalt der Titelleiste beschrieben, mit den Eigenschaften Height und Width die Breite und die Höhe des Fenster. Diese drei Eigenschaften werden direkt im XAML-Code angeboten, nachdem Sie eine neue WPF-Anwendung gestartet oder ein zusätzliches Window der Anwendung hinzugefügt haben.

Damit sind zumindest die drei wahrscheinlich wichtigsten Eigenschaften schon festgelegt. Neben den genannten können Sie mit vielen weiteren Eigenschaften das Aussehen und das Verhalten eines Window-Objekts beeinflussen. Einen Überblick der wichtigsten Eigenschaften können Sie der folgenden Tabelle entnehmen.

Tabelle 20.1 Eigenschaften der Klasse »Window« (Auszug)

Eigenschaft Beschreibung

Icon

Per Vorgabe wird als Symbol ein Standard-Icon verwendet. Wollen Sie dieses durch ein anwendungsspezifisches austauschen, geben Sie der Eigenschaft Icon eine ICO-Datei an.

ResizeMode

ResizeMode gibt an, ob und wie sich die Größe des betreffenden Window-Elements ändern kann. Die Eigenschaft lässt die Einstellungen NoResize, CanMinimize, CanResize und CanResizeWithGrip zu. Je nach Wahl der Einstellung werden die Schaltflächen zum Minimieren und Maximieren in der Titelleiste angezeigt. Der Standard ist CanResize.

ShowInTaskBar

Die Eigenschaft legt fest, ob das minimierte Fenster in der Taskleiste angezeigt wird. Der Vorgabewert ist true.

SizeToContent

Legt fest, ob die Größe eines Fensters automatisch an die Größe des Inhalts angepasst wird. Die Standardeinstellung Manual bedeutet, dass sich die Größe aus den Einstellungen Height und Width des Fensters ergibt. Die Eigenschaft selbst lässt darüber hinaus auch die Einstellungen Width, Height und WidthAndHeight zu. Bei letztgenannter Einstellung wird die angezeigte Breite und Höhe des Fensters automatisch an die Breite und Höhe des Inhalts angepasst.

Topmost

Wird diese Eigenschaft auf true eingestellt, erscheint dieses Fenster immer über allen anderen Fenstern der Anwendung.

WindowStartupLocation

Legt die Position des Fensters fest, wenn es zum ersten Mal angezeigt wird. Die möglichen Einstellungen sind Manual, CenterScreen und CenterOwner. Manual ist der Standard und wird durch die Eigenschaften Left und Top des Fensters beschrieben. Mit CenterScreen wird das Fenster in Bildschirmmitte angezeigt, mit CenterOwner mittig bezüglich eines anderen Fensters, aus dem heraus das aktuelle Fenster aufgerufen wird.

WindowState

Diese Eigenschaft beschreibt die drei Fensterzustände Normal, Minimized und Maximized.

WindowStyle

Gibt den Rahmentyp für das Fenster an. Die möglichen Einstellungen hier lauten None (weder Rahmen noch Titelleiste werden angezeigt), SingleBorderWindow (das ist der Standard), ThreeDBorderWindow (Fenster mit 3D-Rahmen) und ToolWindow (verankertes Toolfenster mit minimierten Fensterrändern).


Galileo Computing - Zum Seitenanfang

20.2.1 Mehrere Fenster in einer AnwendungZur nächsten ÜberschriftZur vorigen Überschrift

Enthält eine WPF-Anwendung nur ein Fenster, wird die Anwendung mit dem Schließen des Fensters beendet. Anwendungen mit nur einem Fenster stellen aber eher die Ausnahme dar, die meisten Anwendungen weisen mehr oder weniger viele Fenster auf. Entwickeln Sie eine Anwendung mit mehreren Fenstern, können Sie das gewünschte Startfenster im Wurzelelement Application der Datei App.xaml angeben. Dazu ändern Sie einfach nur die Angabe des Attributs StartupUri passend ab.

<Application ...
StartupUri="MainWindow.xaml">
<Application.Resources>
</Application.Resources>
</Application>

Listing 20.1 Angabe des Startfensters in der Datei »App.xaml«

Beendet wird eine WPF-Anwendung mit dem Schließen des letzten Fensters.

Jedes neu zu öffnende Fenster muss zuerst als Objekt vorliegen. Dazu instanziieren Sie die Klasse und rufen die Methode Show auf.

Window1 frm = new Window1();
frm.Show();

Das Fenster wird nichtmodal geöffnet. Das heißt, der Benutzer kann ein anderes Fenster der laufenden Anwendung aktivieren. Fenster lassen sich auch modal öffnen. Modal geöffnete Fenster erlauben nicht, ein anderes Fenster der aktuellen Anwendung zu aktivieren. Das modale Fenster muss erst wieder geschlossen werden. Üblicherweise werden modale Fenster auch als Dialogfenster bezeichnet. Eingesetzt werden sie da, wo der Anwender Angaben machen muss, die von der Anwendung sofort in irgendeiner Form umgesetzt werden.

Um ein Fenster als Dialogfenster modal zu öffnen, rufen Sie anstatt der Methode Show die Methode ShowDialog auf. Im Gegensatz zu Show hat die Methode ShowDialog einen Rückgabewert vom Typ Boolean? (mit anderen Worten handelt es sich um einen null-fähigen Boolean). Die Rückgabe kann also true, false oder null sein, der Standardwert ist false. Wie Sie gleich noch sehen werden, benötigen wir diesen Rückgabewert zur Auswertung, welche Aktion zum Schließen des Dialogs geführt hat.

Fenster schließen

Um ein Fenster zu schließen, stehen Ihnen zwei Möglichkeiten zur Verfügung: die Methoden Hide und Close.

Mit Hide wird das Fenster nur unsichtbar gemacht, bleibt aber weiterhin im Speicher. Sie können das Fenster durch den erneuten Aufruf der Methode Show zur Anzeige bringen, ohne dass eine Neuinstanziierung notwendig ist. Das Fenster wird in dem Zustand geöffnet, den es vor dem Aufruf von Hide hatte.

Mit Close wird das Fenster geschlossen, und die beanspruchten Ressourcen werden freigegeben. Das bringt natürlich Ressourcenvorteile im Vergleich zum Verstecken des Fensters. Benötigen Sie das Fenster erneut, müssen Sie die zugrunde liegende Klasse instanziieren.

Beim Schließen eines Fensters treten nacheinander die beiden Ereignisse Closing und Closed auf. Beide unterscheiden sich in der Programmierung dahingehend, dass im Ereignishandler von Closing der eingeleitete Schließvorgang im letzten Augenblick noch abgebrochen werden kann. Dazu setzen Sie die Eigenschaft Cancel des EventArgs-Parameters auf true, z. B.:

private void Window_Closing(object sender, CancelEventArgs e)
{
MessageBoxResult result = MessageBox.Show("Schließen?", "Beenden",
MessageBoxButton.YesNo,
MessageBoxImage.Question,
MessageBoxResult.No);
if (result == MessageBoxResult.No)
e.Cancel = true;
}

Listing 20.2 Den eingeleiteten Schließvorgang optional abbrechen

Diese Chance gibt es nicht mehr, wenn das Ereignis Closed ausgelöst wird. Im Zweifelsfall sind jetzt noch die Benutzereingaben zu speichern, ansonsten sind sie unwiederbringlich verloren.

Modale Fenster schließen

Modale Fenster haben in der Regel zwei Schaltflächen. Diese sind meistens mit OK und Abbrechen beschriftet. Von einem modalen Fenster wird erwartet, dass es nach dem Klicken einer der beiden Schaltflächen geschlossen wird. Die OK-Schaltfläche signalisiert dabei dem aufrufenden Fenster, dass der Anwender seine Eingaben im Dialog bestätigt, die Abbrechen-Schaltfläche, dass die Aktion abgebrochen worden ist.

Bei der Abbrechen-Schaltfläche sollten Sie deren Eigenschaft IsCancel auf true einstellen. Damit wird das Fenster geschlossen, wenn der Anwender auf die Schaltfläche klickt (was übrigens auch mit Drücken der Esc-Taste erfolgen kann). Sie benötigen dann auch keinen separaten Ereignishandler für diese Aktion. Im XAML-Code könnten damit die beiden Schaltflächen OK und Abbrechen wie im folgenden Listing gezeigt definiert sein:

<Button Content="OK" Click="btnOK_Click" ... />
<Button Content="Abbrechen" IsCancel="True" ... />

Listing 20.3 »OK«- und »Abbrechen«-Schaltfläche im Dialogfenster

Bei der OK-Schaltfläche eines Dialogfensters hingegen wird ein Ereignishandler für den Schließvorgang benötigt. Meistens handelt es sich um den Handler, der auf das Click-Ereignis der OK-Schaltfläche reagiert. Im Ereignishandler legen Sie die Eigenschaft DialogResult des WPF-Fensters auf true fest, z. B.:

private void btnOK_Click(object sender, RoutedEventArgs e){
DialogResult = true;
}

Listing 20.4 »OK«-Schaltfläche eines modalen Dialogs

Mit dem Setzen der Eigenschaft ist auch gleichzeitig das Schließen des Dialogs verbunden.

Sie können durch das Festlegen der Eigenschaft IsDefault=true der OK-Schaltfläche dem Dialog mitteilen, dass es sich bei dieser Schaltfläche um die Standardschaltfläche handelt, die der Anwender durch Drücken der Enter-Taste erreichen kann. Das bedeutet mit anderen Worten: Unabhängig davon, welches Steuerelement im Fenster aktuell den Fokus hat, wird beim Drücken der Enter-Taste das Click-Ereignis der OK-Schaltfläche ausgelöst und der entsprechende Ereignishandler abgearbeitet.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.

>> Zum Feedback-Formular
<< zurück
  Zum Katalog
Zum Katalog: Visual C# 2012

Visual C# 2012
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Professionell entwickeln mit Visual C# 2012






 Professionell
 entwickeln mit
 Visual C# 2012


Zum Katalog: Windows Presentation Foundation






 Windows Presentation
 Foundation


Zum Katalog: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Katalog: C++ Handbuch






 C++ Handbuch


Zum Katalog: C/C++






 C/C++


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo





Copyright © Rheinwerk Verlag GmbH 2013
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Rheinwerk Computing]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de