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

Inhaltsverzeichnis
Vorwort zur 5. Auflage
1 Allgemeine Einführung in .NET
2 Grundlagen der Sprache C#
3 Klassendesign
4 Vererbung, Polymorphie und Interfaces
5 Delegates und Ereignisse
6 Weitere .NET-Datentypen
7 Weitere Möglichkeiten von C#
8 Auflistungsklassen (Collections)
9 Fehlerbehandlung und Debugging
10 LINQ to Objects
11 Multithreading und die Task Parallel Library (TPL)
12 Arbeiten mit Dateien und Streams
13 Binäre Serialisierung
14 Einige wichtige .NET-Klassen
15 Projektmanagement und Visual Studio 2010
16 XML
17 WPF – Die Grundlagen
18 WPF-Containerelemente
19 WPF-Steuerelemente
20 Konzepte der WPF
21 Datenbindung
22 2D-Grafik
23 ADO.NET – verbindungsorientierte Objekte
24 ADO.NET – Das Command-Objekt
25 ADO.NET – Der SqlDataAdapter
26 ADO.NET – Daten im lokalen Speicher
27 ADO.NET – Aktualisieren der Datenbank
28 Stark typisierte DataSets
29 LINQ to SQL
30 Weitergabe von Anwendungen
Stichwort

Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Visual C# 2010 von Andreas Kühnel
Das umfassende Handbuch
Buch: Visual C# 2010

Visual C# 2010
geb., mit DVD
1295 S., 49,90 Euro
Rheinwerk Computing
ISBN 978-3-8362-1552-7
Pfeil 19 WPF-Steuerelemente
Pfeil 19.1 Hierarchie der WPF-Komponenten
Pfeil 19.2 Steuerelemente positionieren
Pfeil 19.2.1 Die Eigenschaften »Top«, »Bottom«, »Right« und »Left«
Pfeil 19.2.2 Außenrand mit der Eigenschaft »Margin« festlegen
Pfeil 19.2.3 Innenrand mit der Eigenschaft »Padding« festlegen
Pfeil 19.3 Allgemeine Eigenschaften der WPF-Komponenten
Pfeil 19.3.1 Die Eigenschaft »Content«
Pfeil 19.3.2 Größe einer Komponente
Pfeil 19.3.3 Ausrichtung einer Komponente
Pfeil 19.3.4 Die Eigenschaften »Padding« und »Margin«
Pfeil 19.3.5 Sichtbarkeit eines Steuerelements
Pfeil 19.3.6 Farbeinstellungen
Pfeil 19.3.7 Schriften
Pfeil 19.4 Buttons
Pfeil 19.4.1 Die Basisklasse »ButtonBase«
Pfeil 19.4.2 Das Steuerelement »Button«
Pfeil 19.4.3 Das Steuerelement »ToggleButton«
Pfeil 19.4.4 Das Steuerelement »RepeatButton«
Pfeil 19.4.5 Das Steuerelement »Checkbox«
Pfeil 19.4.6 Das Steuerelement »RadioButton«
Pfeil 19.5 Einfache Eingabesteuerelemente
Pfeil 19.5.1 Das Steuerelement »Label«
Pfeil 19.5.2 Das Steuerelement »TextBox«
Pfeil 19.5.3 Das Steuerelement »PasswordBox«
Pfeil 19.5.4 Das Steuerelement »TextBlock«
Pfeil 19.5.5 Das Steuerelement »Tooltip«
Pfeil 19.6 FlowDocuments
Pfeil 19.6.1 Allgemeine Beschreibung
Pfeil 19.6.2 Eigenschaften eines FlowDocuments
Pfeil 19.6.3 Blöcke eines FlowDocuments
Pfeil 19.6.4 Inline-Elemente
Pfeil 19.6.5 FlowDocuments mit Code erzeugen
Pfeil 19.6.6 Speichern und Laden von FlowDocuments
Pfeil 19.7 Das Element »FlowDocumentViewer«
Pfeil 19.7.1 Das Anzeigeelement »FlowDocumentScrollViewer«
Pfeil 19.7.2 Das Anzeigeelement »FlowDocumentPageViewer«
Pfeil 19.7.3 Das Anzeigeelement »FlowDocumentReader«
Pfeil 19.8 XPS-Dokumente mit »DocumentViewer«
Pfeil 19.8.1 Allgemeines zum XPS-Format
Pfeil 19.8.2 Beispielprogramm
Pfeil 19.8.3 Das Steuerelement »RichTextBox«
Pfeil 19.9 WPF-Listenelemente – ItemControls
Pfeil 19.9.1 Das Steuerelement »ListBox«
Pfeil 19.9.2 ComboBox
Pfeil 19.9.3 Das Steuerelement »ListView«
Pfeil 19.9.4 Das Steuerelement »TreeView«
Pfeil 19.9.5 Das Steuerelement »TabControl«
Pfeil 19.9.6 Menüleisten
Pfeil 19.9.7 Kontextmenüs
Pfeil 19.9.8 Symbolleisten
Pfeil 19.9.9 Die Statusleiste
Pfeil 19.10 Weitere Steuerelemente
Pfeil 19.10.1 Die »ProgressBar«
Pfeil 19.10.2 Das Steuerelement »Slider«
Pfeil 19.10.3 Das »GroupBox«-Steuerelement
Pfeil 19.10.4 Das Steuerelement »ScrollViewer«
Pfeil 19.10.5 Das Steuerelement »Expander«
Pfeil 19.10.6 Das Steuerelement »Border«
Pfeil 19.10.7 Die »Image«-Komponente
Pfeil 19.10.8 Grafik zur Laufzeit laden


Galileo Computing - Zum Seitenanfang

19.4 Buttons Zur nächsten ÜberschriftZur vorigen Überschrift

Schaltflächen sind ein wesentlicher Bestandteil jeder Windows-Anwendung und relativ einfach aufgebaut. Wir wollen uns daher zuerst 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.


Galileo Computing - Zum Seitenanfang

19.4.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 dabei ist, dass festgelegt werden kann, wann das Click-Ereignis ausgelöst wird. Unter Windows Forms war das nicht möglich, hier wurde das Ereignis 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 Tabelle 19.5 entnehmen können.


Tabelle 19.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.



Galileo Computing - Zum Seitenanfang

19.4.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 aber auch noch eine besondere Eigenschaft auf. Sie können in einem Fenster je einen Button mit IsDefault = True bzw. IsCancel = true kennzeichnen. Diese Schaltflächen reagieren auf die Taste Enter - bzw. die Taste ESC -Taste. Wurde das entsprechende Fenster zuvor mit der Methode ShowDialog geöffnet, bewirken diese Schaltflächen auch das Schließen des Fensters. Dabei wird an ShowDialog der Wert True oder False übergeben.


Hinweis

Leicht zu verwechseln sind die beiden Eigenschaften IsDefault und IsDefaulted. Letztgenannte gehört zu einer langen Liste weiterer Eigenschaften, die über spezifische Zustände Auskunft geben. IsDefaulted gibt an, ob ein Button die Schaltfläche ist, die beim Drücken der Eingabetaste betätigt wurde. Diese Eigenschaft ist auch schreibgeschützt.


Buttons können mit einer Tastenkombination Taste Alt + Buchstabe aktiviert werden. Im XAML-Code kennzeichnen Sie den sogenannten Mnemonics-Buchstaben durch das Voranstellen eines Unterstrichs. Der Unterstrich ist nur im laufenden Programm zu sehen, wenn der Benutzer die Taste Alt -Taste drückt. Natürlich geht diese Fähigkeit 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.


Galileo Computing - Zum Seitenanfang

19.4.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-Control entspricht. Ein ToggleButton behält nach dem Klicken seinen Zustand bei. Wird er angeklickt, behält er so lange seine Position bei, bis der nächste Klick erfolgt.

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 ein undefinierter Zustand beschrieben. Diesen Zustand kann ein ToggleButton-Objekt nur annehmen, wenn die Eigenschaft IsThreeState = true gesetzt ist.

Hinsichtlich der Ereignisse ist erwähnenswert, dass mit Checked, Unchecked und Intermediate Ereignisse ausgelöst werden, wenn der entsprechende Zustand erreicht wird.

Das Steuerelement ToggleButton, das zum Namespace System.Windows.Controls.Primitives gehört, werden Sie in der Toolbox vergeblich suchen, weil es normalerweise nur im Zusammenhang mit komplexeren Steuerelementen verwendet wird (beispielsweise der Symbolleiste). Sie können das Steuerelement aber dennoch problemlos im XAML-Code benutzen.

Ein kleines Codebeispiel soll am Schluss den Einsatz zeigen:


<ToggleButton Checked="toggleButton1_Checked" 
              Unchecked="toggleButton1_Unchecked"  
              IsEnabled="True">ToggleButton
              ...
</ToggleButton>

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");
}


Galileo Computing - Zum Seitenanfang

19.4.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, mit der Click-Ereignisse auftreten, 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 in der Toolbox 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 verringern. Sie können dieses Steuerelement dazu verwenden, um beispielsweise ein »Up-Down«-Control zu entwickeln, wie es im folgenden Beispiel gezeigt wird.


// ------------------------------------------------------------------
// Beispiel: ...\Kapitel 19\RepeatButtonSample 
// ------------------------------------------------------------------
<Window ...>
<StackPanel>
  <Border Margin="5" HorizontalAlignment="Left" BorderThickness="1"  
          BorderBrush="Black">
    <Grid>
      <Grid.RowDefinitions>
        <RowDefinition></RowDefinition>
        <RowDefinition></RowDefinition>
      </Grid.RowDefinitions>
      <Grid.ColumnDefinitions>
        <ColumnDefinition></ColumnDefinition>
        <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>

Zu diesem XAML-Code gehört der folgende C#-Code, der 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 19.7 Ausgabe des Beispiels »RepeatButtonSample«


Galileo Computing - Zum Seitenanfang

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

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


Galileo Computing - Zum Seitenanfang

19.4.6 Das Steuerelement »RadioButton« topZur vorigen Überschrift

Auch ein RadioButton ist ein ToggleButton, allerdings mit einem etwas anderen Verhalten in der Hinsicht, dass mehrere RadioButtons eine Gruppe bilden und immer nur einer ausgewählt sein kann. Die anderen RadioButton-Elemente der Gruppe sind dann deaktiviert.

Befinden sich mehrere RadioButtons in einem übergeordneten Panel, bilden diese automatisch eine Gruppe. Sollen mehrere verschiedene Gruppen in einem Panel gebildet werden, stellen Sie einfach die Eigenschaft GroupName ein. Alle RadioButton-Elemente mit demselben GroupName-Bezeichner gehören einer gemeinsamen Gruppe an. Eine andere Möglichkeit ist, für alle zu gruppierenden Steuerelemente ein separates Panel bereitzustellen. Dabei kann es sich um Layoutcontainer handeln, aber auch um Steuerelemente wie Panel oder GroupBox.

Im folgenden Beispielcode sind zwei Gruppen von RadioButton-Steuerelementen 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">
    <!-- erste Gruppe -->
    <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" />
    <!-- zweite Gruppe -->
    <RadioButton Content="Mann" GroupName="Gruppe2" 
                 Margin="5,0,5,5" />
    <RadioButton Content="Frau" GroupName="Gruppe2" 
                 Margin="5,0,5,5" IsChecked="True" />
  </StackPanel>
</Window>

Abbildung 19.8 Gruppierte RadioButtons



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

Visual C# 2010
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 2010
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