Rheinwerk Computing < openbook > Rheinwerk 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

Jetzt 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 21 WPF-Steuerelemente
Pfeil 21.1 Die Hierarchie der WPF-Komponenten
Pfeil 21.2 Allgemeine Eigenschaften der WPF-Steuerelemente
Pfeil 21.2.1 Den Außenrand mit der Eigenschaft »Margin« festlegen
Pfeil 21.2.2 Den Innenrand mit der Eigenschaft »Padding« festlegen
Pfeil 21.2.3 Die Eigenschaft »Content«
Pfeil 21.2.4 Die Größe einer Komponente
Pfeil 21.2.5 Die Ausrichtung einer Komponente
Pfeil 21.2.6 Die Sichtbarkeit eines Steuerelements
Pfeil 21.2.7 Die Farbeinstellungen
Pfeil 21.2.8 Die Schriften
Pfeil 21.3 Die unterschiedlichen Schaltflächen
Pfeil 21.3.1 Die Basisklasse »ButtonBase«
Pfeil 21.3.2 Das Steuerelement »Button«
Pfeil 21.3.3 Das Steuerelement »ToggleButton«
Pfeil 21.3.4 Das Steuerelement »RepeatButton«
Pfeil 21.3.5 Das Steuerelement »Checkbox«
Pfeil 21.3.6 Das Steuerelement »RadioButton«
Pfeil 21.4 Einfache Eingabesteuerelemente
Pfeil 21.4.1 Das Steuerelement »Label«
Pfeil 21.4.2 Das Steuerelement »TextBox«
Pfeil 21.4.3 Das Steuerelement »PasswordBox«
Pfeil 21.4.4 Das Steuerelement »TextBlock«
Pfeil 21.5 WPF-Listenelemente
Pfeil 21.5.1 Das Steuerelement »ListBox«
Pfeil 21.5.2 Die »ComboBox«
Pfeil 21.5.3 Das Steuerelement »ListView«
Pfeil 21.5.4 Das Steuerelement »TreeView«
Pfeil 21.5.5 Das Steuerelement »TabControl«
Pfeil 21.5.6 Die Menüleiste
Pfeil 21.5.7 Das Kontextmenü
Pfeil 21.5.8 Symbolleisten
Pfeil 21.5.9 Die Statusleiste
Pfeil 21.6 Weitere Steuerelemente
Pfeil 21.6.1 Das Steuerelement »ToolTip«
Pfeil 21.6.2 Die »Progressbar«
Pfeil 21.6.3 Das Steuerelement »Slider«
Pfeil 21.6.4 Das »GroupBox«-Steuerelement
Pfeil 21.6.5 Das Steuerelement »ScrollViewer«
Pfeil 21.6.6 Das Steuerelement »Expander«
Pfeil 21.6.7 Das Steuerelement »Border«
Pfeil 21.6.8 Die »Image«-Komponente
Pfeil 21.6.9 »Calendar« und »DatePicker« zur Datumsangabe
Pfeil 21.6.10 Das Steuerelement »InkCanvas«
Pfeil 21.7 Das »Ribbon«-Steuerelement
Pfeil 21.7.1 Voraussetzungen für den Zugriff auf das »Ribbon«-Control
Pfeil 21.7.2 Ein kurzer Überblick
Pfeil 21.7.3 Der XAML-Code
Pfeil 21.8 FlowDocuments
Pfeil 21.8.1 Allgemeine Beschreibung eines FlowDocuments
Pfeil 21.8.2 Eigenschaften eines »FlowDocuments«
Pfeil 21.8.3 Die Blöcke eines »FlowDocuments«
Pfeil 21.8.4 Inline-Elemente
Pfeil 21.8.5 »FlowDocuments« mit Code erzeugen
Pfeil 21.8.6 Speichern und Laden eines »FlowDocuments«
Pfeil 21.9 Das Element »FlowDocumentViewer«
Pfeil 21.9.1 Das Anzeigeelement »FlowDocumentScrollViewer«
Pfeil 21.9.2 Das Anzeigeelement »FlowDocumentPageViewer«
Pfeil 21.9.3 Das Anzeigeelement »FlowDocumentReader«
Pfeil 21.10 XPS-Dokumente mit »DocumentViewer«
Pfeil 21.10.1 Allgemeines zum XPS-Format
Pfeil 21.10.2 Beispielprogramm
Pfeil 21.11 Das Steuerelement »RichTextBox«

Rheinwerk Computing - Zum Seitenanfang

21.3 Die unterschiedlichen SchaltflächenZur nächsten Überschrift

Schaltflächen sind ein wesentlicher Bestandteil jeder Windows-Anwendung und relativ einfach aufgebaut. Wir wollen uns daher als Erstes dieser Familie zuwenden. Grundsätzlich werden zu den Schaltflächen fünf verschiedene Steuerelemente gerechnet:

  • Button
  • ToggleButton
  • RepeatButton
  • RadioButton
  • CheckBox

In der Toolbox werden Sie die Steuerelemente ToggleButton und RepeatButton nicht finden, da diese beiden Typen ausschließlich anderen Steuerelementen als Basisklasse dienen. Alle genannten Typen sind aber auf die gemeinsame Basisklasse ButtonBase zurückzuführen.


Rheinwerk Computing - Zum Seitenanfang

21.3.1 Die Basisklasse »ButtonBase«Zur nächsten ÜberschriftZur vorigen Überschrift

Das grundlegende Verhalten aller Schaltflächen-Steuerelemente ist bereits in der Basisklasse ButtonBase festgelegt. Das auffälligste Merkmal dürfte sein, dass sie angeklickt werden können. Die Eigenschaft IsPressed liefert die Information, ob der Button aktuell gedrückt ist oder nicht.

Interessant ist, dass festgelegt werden kann, unter welchen Umständen das Click-Ereignis ausgelöst wird. Traditionell wurde das Ereignis bisher grundsätzlich immer beim Loslassen der Maustaste ausgelöst. Das ist in WPF zwar auch die Vorgabe, kann aber durch entsprechendes Setzen der Eigenschaft ClickMode geändert werden. ClickMode gestattet drei verschiedene Einstellungen, Release, Press und Hover, deren Beschreibung Sie der folgenden Tabelle entnehmen können.

Tabelle 21.5 Die Enumeration »ClickMode«

Member Beschreibung

Release

Das Ereignis wird ausgelöst, wenn auf eine Schaltfläche geklickt und die Maustaste losgelassen wird. Dies ist die Standardvorgabe.

Press

Das Ereignis wird ausgelöst, wenn auf eine Schaltfläche geklickt wird, sie aber noch nicht losgelassen wird.

Hover

Das Ereignis wird ausgelöst, wenn der Mauszeiger über ein Steuerelement bewegt wird.


Rheinwerk Computing - Zum Seitenanfang

21.3.2 Das Steuerelement »Button«Zur nächsten ÜberschriftZur vorigen Überschrift

Schaltflächen vom Typ Button sind vielleicht die am häufigsten anzutreffenden Steuerelemente. Ihr Einsatz ist denkbar einfach. Ziehen Sie das Element aus der Toolbox in das Window, oder schreiben Sie direkt den XAML-Code. Nach der Festlegung der Eigenschaften hinsichtlich Größe und Position legen Sie noch die Eigenschaft Content fest.

Button-Objekte weisen eine besondere Eigenschaft auf. Sie können in einem Fenster je einen Button mit IsDefault=true bzw. IsCancel=true kennzeichnen. Dann reagieren Schaltflächen auf die Enter- bzw. Esc-Taste. Wurde das zugehörige Fenster mit der Methode ShowDialog geöffnet, bewirken diese Schaltflächen gleichzeitig auch das Schließen des Fensters. Dabei wird an ShowDialog der Wert true oder false übergeben.

Leicht zu verwechseln sind die beiden Eigenschaften IsDefault und IsDefaulted. Letztgenannte gehört zu einer langen Liste weiterer Eigenschaften, die über spezifische Zustände eines Steuerelements Auskunft geben. IsDefaulted gibt an, ob ein Button die Schaltfläche ist, der die Eingabetaste mit IsDefault=true zugeordnet worden ist. IsDefaulted ist schreibgeschützt.

Schaltflächen können häufig mit der Tastenkombination Alt + Buchstabe aktiviert werden. Im XAML-Code kennzeichnen Sie den sogenannten Mnemonics-Buchstaben durch das Voranstellen eines Unterstrichs, z. B.:

<Button Height="35" Width="120">_Abbrechen</Button>

Der Unterstrich ist nur im laufenden Programm zu sehen, wenn der Benutzer die Alt-Taste drückt. Diese Fähigkeit geht natürlich verloren, wenn Sie anstatt einer Zeichenfolge der Content-Eigenschaft ein anderes Steuerelement übergeben.

Hinsichtlich der Ereignisse gibt es nicht viel zu erzählen. In der Regel werden Sie nur das Ereignis Click programmieren.


Rheinwerk Computing - Zum Seitenanfang

21.3.3 Das Steuerelement »ToggleButton«Zur nächsten ÜberschriftZur vorigen Überschrift

Ein Button-Objekt wird nach dem Anklicken wieder seinen ursprünglichen Zustand einnehmen. In dieser Hinsicht verhält sich ein ToggleButton anders, obwohl er im ersten Moment optisch einem Button entspricht. ToggleButton ist im Namespace System.Windows.Controls.Primitives definiert.

Ein ToggleButton behält nach dem Klicken seinen Zustand bei. Wird er angeklickt, behält er so lange seine Position bei, bis er erneut angeklickt wird.

Das Control ToggleButton wird nicht im Werkzeugkasten angeboten. Sie müssen dieses Steuerelement daher direkt im XAML-Code erzeugen.

Der aktuelle Zustand kann mit der Eigenschaft IsChecked ausgewertet werden. Normalerweise wird das Steuerelement true (aktiviert) oder false (deaktiviert) zurückliefern. Ein ToggleButton kann aber auch drei Zustände beschreiben: true, false und null. Mit dem dritten Zustand wird es als undefiniert beschrieben. Das wäre zum Beispiel der Fall, wenn mit dem ToggleButton beschrieben werden soll, ob ein markierter Textabschnitt in einem Dokument fett dargestellt wird oder nicht. Der undefinierte Zustand wäre dann gegeben, wenn nur Teile des markierten Textes fett sind.

Diesen Zustand IsChecked=null kann ein ToggleButton-Objekt nur annehmen, wenn die Eigenschaft IsThreeState=true gesetzt ist. Das folgende Listing zeigt, wie die drei Zustände aktiviert werden und gleichzeitig der Zustand mit undefiniert angegeben werden kann.

<ToggleButton IsChecked="{x:Null}" IsThreeState="True">
ToggleButton1
</ToggleButton>

Listing 21.8 »ToggleButton« im XAML-Code

Hinsichtlich der Ereignisse ist erwähnenswert, dass mit Checked, Unchecked und Intermediate Ereignisse ausgelöst werden, je nachdem, welcher Zustand erreicht wird. In der Code-Behind-Datei können Sie die Ereignishandler programmieren, beispielsweise:

private void toggleButton1_Checked(object sender, RoutedEventArgs e) {
MessageBox.Show("Aktueller Zustand: Checked");
}
private void toggleButton1_Unchecked(object sender, RoutedEventArgs e) {
MessageBox.Show("Aktueller Zustand: Unchecked");
}

Alternativ zu Checked und Unchecked kann der Zustand auch über das Click-Ereignis ermittelt werden:

private void toggleButton1_Click(object sender, RoutedEventArgs e) {
if((bool)toggleButton1.IsChecked)
MessageBox.Show("Zustand: Checked");
else
MessageBox.Show("Zustand: Unchecked");
}

Rheinwerk Computing - Zum Seitenanfang

21.3.4 Das Steuerelement »RepeatButton«Zur nächsten ÜberschriftZur vorigen Überschrift

Ähnlich wie der zuvor besprochene Button agiert auch ein RepeatButton. Der Unterschied ist, dass dieser Schaltflächentyp kontinuierlich Click-Ereignisse auslöst, solange der Mauszeiger bei gedrückter Maustaste auf das Steuerelement weist. Die Häufigkeit des Auftretens der Click-Ereignisse hängt von den Einstellungen der Eigenschaften Delay und Interval ab. Die Zeitspanne vom Drücken bis zur ersten Click-Auslösung wird von Delay beschrieben und ist eine Angabe in Millisekunden. Die Zeitspanne zwischen den sich wiederholenden Ereignissen beschreibt Interval (ebenfalls in Millisekunden). Ähnlich wie ein ToggleButton gehört auch dieses Steuerelement zum Namespace System.Windows.Controls.Primitives und wird nicht im Werkzeugkasten angeboten. Meistens findet es Verwendung im Zusammenhang mit anderen, komplexeren Steuerelementen.

Sinnvoll ist dieses Steuerelement, wenn es darum geht, Werte kontinuierlich zu erhöhen oder zu reduzieren. Sie können dieses Steuerelement dazu verwenden, um beispielsweise ein »Up-Down«-Steuerelement zu entwickeln, wie es im folgenden Beispiel gezeigt wird.

// Beispiel: ..\Kapitel 21\RepeatButtonSample
<Window ...>
<StackPanel>
<Border Margin="5" HorizontalAlignment="Left" BorderThickness="1"
BorderBrush="Black">
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Label Name="lblNumber" Grid.RowSpan="2" Content="0"
VerticalAlignment="Center" MinWidth="40" />
<RepeatButton Name="btnUp" Grid.Column="1" Click="btnUp_Click">
<Polygon Margin="4,0" Points="3,0 6,6 0,6 3,0"
Stroke="Black" Fill="Black"/>
</RepeatButton>
<RepeatButton Name="btnDown" Grid.Row="1" Grid.Column="1"
Click="btnDown_Click">

<Polygon Margin="4,0" Points="3,6 6,0 0,0 3,6"
Stroke="Black" Fill="Black"/>
</RepeatButton>

</Grid>
</Border>
</StackPanel>
</Window>

Listing 21.9 Einfache Definition einer »Up-Down«-Schaltfläche

Im XAML-Code sind zwei Elemente vom Typ RepeatButton angegeben. Das erste dient dazu, eine Zahl, die in einem Label angezeigt wird, zu erhöhen, das zweite Element dazu, die Zahl zu reduzieren. Die Content-Eigenschaft der beiden RepeatButton-Steuerelemente wird jeweils durch ein Polygon-Element beschrieben. Mit der Eigenschaft Points wird dabei ein Dreieck beschrieben, das entweder mit einer Spitze nach oben oder nach unten zeigt.

Zu diesem XAML-Code gehört der folgende C#-Code, der so einfach gehalten ist, dass er keiner weiteren Erläuterung bedarf.

private void btnUp_Click(object sender, RoutedEventArgs e) {
lblNumber.Content = Convert.ToInt32(lblNumber.Content.ToString()) + 1;
}
private void btnDown_Click(object sender, RoutedEventArgs e) {
lblNumber.Content = Convert.ToInt32(lblNumber.Content.ToString()) - 1;
}

Abbildung

Abbildung 21.6 Ausgabe des Beispiels »RepeatButtonSample«


Rheinwerk Computing - Zum Seitenanfang

21.3.5 Das Steuerelement »Checkbox«Zur nächsten ÜberschriftZur vorigen Überschrift

Die CheckBox ähnelt vom Verhalten her einem ToggleButton, hat aber eine andere Darstellung, da der Zustand durch ein Zustandshäkchen angezeigt wird.


Rheinwerk Computing - Zum Seitenanfang

21.3.6 Das Steuerelement »RadioButton«Zur vorigen Überschrift

Auch ein RadioButton ist ein ToggleButton, allerdings mit einem etwas anderen Verhalten in der Hinsicht, dass mehrere RadioButton-Elemente eine Gruppe bilden, innerhalb deren nur ein RadioButton ausgewählt sein kann.

Befinden sich mehrere RadioButtons in einem übergeordneten Panel, bilden diese automatisch eine Gruppe. Benötigen Sie mehrere voneinander unabhängige Gruppen in einem Panel, stellen Sie die Eigenschaft GroupName ein. Alle RadioButton-Elemente mit demselben GroupName-Bezeichner gehören dann zu einer gemeinsamen Gruppe. Eine andere Möglichkeit ist, für alle zu gruppierenden Steuerelemente ein separates Panel bereitzustellen. Dabei kann es sich um Layout-Container handeln, aber auch um Steuerelemente wie Panel oder GroupBox.

Im folgenden Beispielcode sind zwei Gruppen definiert, die sich im gleichen Container befinden. Die Gruppenzugehörigkeit wird durch GroupName beschrieben. Innerhalb jeder Gruppe ist jeweils ein RadioButton durch Angabe der Eigenschaft IsSelected vorselektiert.

<Window ... >
<StackPanel Margin="10">
<!-- Gruppe 1 -->
<RadioButton Content="Schornsteinfeger" GroupName="Gruppe1"
Margin="5,0,5,5" />
<RadioButton Content="Bäckermeister" GroupName="Gruppe1"
Margin="5,0,5,5" IsChecked="True" />
<RadioButton Content="Dachdecker" GroupName="Gruppe1"
Margin="5,0,5,20" />
<!-- Gruppe 2 -->
<RadioButton Content="Mann" GroupName="Gruppe2"
Margin="5,0,5,5" />
<RadioButton Content="Frau" GroupName="Gruppe2"
Margin="5,0,5,5" IsChecked="True" />
</StackPanel>
</Window>

Listing 21.10 Gruppieren von »RadioButton«-Elementen

Abbildung

Abbildung 21.7 Gruppierte RadioButtons



Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

<< zurück
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Visual C# 2012

Visual C# 2012
Jetzt Buch bestellen


 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Rheinwerk-Shop: Professionell entwickeln mit Visual C# 2012






 Professionell
 entwickeln mit
 Visual C# 2012


Zum Rheinwerk-Shop: Windows Presentation Foundation






 Windows Presentation
 Foundation


Zum Rheinwerk-Shop: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Rheinwerk-Shop: C++ Handbuch






 C++ Handbuch


Zum Rheinwerk-Shop: C/C++






 C/C++


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
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.


Nutzungsbestimmungen | Datenschutz | Impressum

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

Cookie-Einstellungen ändern