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.10 Weitere Steuerelemente Zur nächsten ÜberschriftZur vorigen Überschrift


Galileo Computing - Zum Seitenanfang

19.10.1 Die »ProgressBar« Zur nächsten ÜberschriftZur vorigen Überschrift

Das Element ProgressBar dient dazu, den Benutzer bei einer lange andauernden Verarbeitung über den aktuellen Fortschritt zu informieren. Die wichtigsten Eigenschaften sind schnell genannt: Minimum beschreibt den Minimalwert, die Eigenschaft Maximum den Maximalwert, und Value bestimmt die aktuelle Position.


<ProgressBar Minimum="0" Maximum="100" Value="35" Height="25"/>

Eine interessante Eigenschaft der ProgressBar soll aber nicht unerwähnt bleiben: IsIndeterminate. Sie können diese Eigenschaft auf True festlegen, wenn die aktuelle Fortschrittsposition nicht festzustellen bzw. unbekannt ist. In diesem Fall werden die drei Eigenschaften Minimum, Maximum und Value ignoriert, und stattdessen wird anstelle des Fortschrittsbalkens eine Animation angezeigt.


Galileo Computing - Zum Seitenanfang

19.10.2 Das Steuerelement »Slider« Zur nächsten ÜberschriftZur vorigen Überschrift

Mit dem Slider-Steuerelement kann der Anwender einen bestimmten Wert einstellen. Zur Festlegung des minimalen und maximalen Werts dienen auch hier die Eigenschaften Minmum und Maximum, und die Eigenschaft Value beschreibt den aktuellen Wert. Mit der Eigenschaft TickFrequency können Sie eine Hilfsskala einblenden, die mit TickPlacement am Slider ausgerichtet werden kann. Der an TickFrequency zugewiesene Wert beschreibt den Abstand der Hilfslinien. Mit der Eigenschaft IsSnapToTickEnabled=True bewirken Sie, dass der Anwender nicht einen beliebigen Wert einstellen kann, sondern nur Werte, die durch die Hilfslinien vorgegeben werden. Der Schieberegler schnappt also ein.


<Slider TickFrequency="5" TickPlacement="BottomRight" Minimum="0" 
        Maximum="100" IsSnapToTickEnabled="True"></Slider>

Abbildung 19.32 Das Slider-Steuerelement

Normalerweise wird der Minimalwert links und der Maximalwert rechts ausgerichtet. Mit IsDirectionReversed kann die Ausrichtung umgekehrt werden.

Klickt der Anwender links oder rechts vom Schieberegler, wird zum aktuellen Wert der unter LargeChange eingestellte Wert addiert bzw. von ihm subtrahiert. Soll stattdessen die exakte Klickposition zur Festlegung des neuen Wertes herangezogen werden, ist die Eigenschaft IsMoveToPointEnabled auf True einzustellen.


Galileo Computing - Zum Seitenanfang

19.10.3 Das »GroupBox«-Steuerelement Zur nächsten ÜberschriftZur vorigen Überschrift

Bei der GroupBox handelt es sich um ein Steuerelement, das mehrere andere Steuerelemente visuell zusammenfassen kann. Der von einer GroupBox einfasste Inhalt wird durch die Eigenschaft Content beschrieben. Dabei kann es sich um einen LayoutContainer handeln, sodass im Grunde genommen beliebig viele Elemente einer GroupBox zugeordnet werden können.

Eine GroupBox kann eine Beschriftung aufweisen. Dazu dient die Eigenschaft Header. Natürlich kann Header auch ein anderes Steuerelement beschreiben. Der folgende XAML-Code beschreibt zwei GroupBox-Elemente. Das untere weist ein CheckBox-Element in der Eigenschaft Header auf.


<Grid>
  <Grid.RowDefinitions>
    <RowDefinition /><RowDefinition />
  </Grid.RowDefinitions>
  <GroupBox Grid.Row="0" Header="Schriftstil" BorderThickness="2" 
                                              BorderBrush="Black">
    <StackPanel>
      <CheckBox>Fett</CheckBox>
      <CheckBox>Kursiv</CheckBox>
      <CheckBox>Unterstrichen</CheckBox>
    </StackPanel>
  </GroupBox>
  <GroupBox Grid.Row="1" BorderThickness="2" BorderBrush="Black">
    <GroupBox.Header>
      <CheckBox>Aktivierung</CheckBox>
    </GroupBox.Header>
    <StackPanel>
      <TextBox Margin="5"></TextBox>
      <TextBox Margin="5"></TextBox>
    </StackPanel>
  </GroupBox>
</Grid>

Abbildung 19.33 Zwei GroupBox-Steuerelemente


Galileo Computing - Zum Seitenanfang

19.10.4 Das Steuerelement »ScrollViewer« Zur nächsten ÜberschriftZur vorigen Überschrift

Einige WPF-Steuerelemente sind zwar in der Lage, einen umfangreichen Inhalt anzuzeigen, unterstützen aber leider keine Scrollbars. Dieses Manko kann durch das Steuerelement ScrollViewer behoben werden. Ein ScrollViewer zeigt Scrollbars an, sobald der Inhalt eines Elements größer wird als sein Anzeigebereich und die beiden Eigenschaften

  • HorizontalScrollBarVisibility und
  • VerticalScrollBarVisibility

auf Visible eingestellt sind.

Eine Reihe von Methoden ermöglichen es, den angezeigten Inhalt beliebig zu verschieben, z. B. ScrollToLeftEnd oder LineRight. Um die Wirkungsweise der Methoden einfach zu erfahren, dient das folgende Beispielprogramm. Für die infrage kommenden Methoden sind linksseitig Buttons angeordnet. Die Methode, die von dem jeweiligen Button aufgerufen wird, ist in der Beschriftung angegeben. Der XAML- und C#-Code wird an dieser Stelle aus Platzgründen nur gekürzt wiedergegeben.


// ------------------------------------------------------------------
// Beispiel: ...\Kapitel 19\ScrollViewerSample
// -----------------------------------------------------------------.
<DockPanel>
  <StackPanel DockPanel.Dock="Left" Orientation="Vertical" Width="120" 
              ButtonBase.Click="ButtonHandler" >
    <Button Name="btnLineUp" Margin="5,5,5,5" Content="LineUp()" />
    <Button Name="btnLineDown" Margin="5,5,5,5" Content="LineDown()" />
    <Button Name="btnLineRight" Margin="5,5,5,5" Content="LineRight()" />
    <Button Name="btnLineLeft" Margin="5,5,5,5" Content="LineLeft()" />
    ...
  </StackPanel>
  <ScrollViewer Name="scrViewer" Margin="5"
                HorizontalScrollBarVisibility="Visible" 
                VerticalScrollBarVisibility="Visible">
    <TextBlock Margin="10" TextWrapping="Wrap" Width="500">        
      ...
    </TextBlock>
  </ScrollViewer>      
</DockPanel>

Zu diesem XAML-Code gehört der folgende C#-Code:


private void ButtonHandler(object sender, RoutedEventArgs e) {
  Button btn = e.Source as Button;
  switch (btn.Name) {
    case "btnLineUp":
      scrViewer.LineUp();
      break;
    case "btnLineDown":
      scrViewer.LineDown();
      break;
    case "btnLineRight":
      scrViewer.LineRight();
      break;
    ...
  }
}

Abbildung 19.34 Ausgabe des Beispielprogramms »ScrollViewerSample«


Galileo Computing - Zum Seitenanfang

19.10.5 Das Steuerelement »Expander« Zur nächsten ÜberschriftZur vorigen Überschrift

Das Steuerelement Expander ist der Gruppe der Steuerelemente zuzurechnen, die dem Design dienen. Das Element kann ein untergeordnetes Element beinhalten. Der Bereich, der von dem untergeordneten Steuerelement beschrieben wird, kann aufgeklappt oder zusammengeklappt dargestellt werden. Im zusammengeklappten Zustand wird lediglich ein Pfeil angezeigt, über den der verdeckte Inhalt wieder sichtbar gemacht werden kann. Expander-Objekte eignen sich besonders dann, wenn ein Detailbereich für den Anwender eingeblendet werden soll.

Der Zustand des Expander-Objekts wird mit der Eigenschaft IsExpanded beschrieben. Die Eigenschaft ExpandedDirection gibt die Richtung an, in die aufgeklappt wird. Dabei sind die Richtungen links, rechts, oben und unten möglich. Wird der Inhalt in vertikaler Richtung aufgeklappt, passt sich die Höhe des angezeigten Bereichs dem Inhalt an. Entsprechendes gilt, wenn in horizontaler Richtung aufgeklappt wird. Hier ist es natürlich die Breite, die sich dem Inhalt anpasst.

Erwähnenswert ist, das beim Öffnen und Schließen des Expander-Objekts die Ereignisse Expanded und Collapsed ausgelöst werden. Sie können somit auf diese Aktionen auch mit entsprechenden Operationen reagieren.


// ------------------------------------------------------------------
// Beispiel: ...\Kapitel 19\ExpanderSample
// -----------------------------------------------------------------.
<StackPanel>
  <Expander Margin="10">
    <Expander.Background>
      <LinearGradientBrush StartPoint="0,0" EndPoint="1,2">
        <GradientStop Offset="0" Color="White" />
        <GradientStop Offset="1" Color="Blue" />
      </LinearGradientBrush>
    </Expander.Background>
    <StackPanel>
      <Button Height="30" Margin="5">Button 1</Button>
      <Button Height="30" Margin="5">Button 2</Button>
      <Button Height="30" Margin="5">Button 3</Button>
    </StackPanel>
  </Expander>
  <Expander Margin="10">
    <Expander.Background>
      <LinearGradientBrush StartPoint="0,0" EndPoint="1,2">
        <GradientStop Offset="0" Color="White" />
        <GradientStop Offset="1" Color="Red" />
      </LinearGradientBrush>
    </Expander.Background>
    <StackPanel>
      <Button Height="30" Margin="5">Button 4</Button>
      <Button Height="30" Margin="5">Button 5</Button>
      <Button Height="30" Margin="5">Button 6</Button>
    </StackPanel>
  </Expander>
</StackPanel>

Abbildung 19.35 Zwei Expander-Objekte (Das obere ist zusammengeklappt.)


Galileo Computing - Zum Seitenanfang

19.10.6 Das Steuerelement »Border« Zur nächsten ÜberschriftZur vorigen Überschrift

Das Border-Steuerelement ist ein sehr einfaches Steuerelement, das dazu dient, einen visuellen Rahmen um andere Steuerelemente zu zeichnen. Border ist ein Inhaltssteuerelement. Das bedeutet, dass es direkt nur ein anderes Element beinhalten kann. Üblicherweise handelt es dabei um einen LayoutContainer.

Nur wenige Eigenschaften sind erwähnenswert: Mit CornerRadius können die Ecken abgerundet werden, BorderThickness legt die Breite fest, und BorderBrush definiert das Aussehen des Rahmens.


// ------------------------------------------------------------------
// Beispiel: ...\Kapitel 19\BorderSample
// -----------------------------------------------------------------.
<Grid>
  <Border CornerRadius="20" BorderThickness="25" Margin="5">
    <Border.BorderBrush>
      <LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
        <GradientStop Offset="0" Color="White" />
        <GradientStop Offset="1" Color="Blue" />
      </LinearGradientBrush>
    </Border.BorderBrush>
    <StackPanel>
      <Button Height="40" Margin="20, 20, 20, 10">Button 1</Button>
      <Button Height="40" Margin="20, 10, 20, 20">Button 2</Button>
    </StackPanel>
  </Border>
</Grid>

Die Ausgabe dieses Beispiels sehen Sie in Abbildung 19.36.

Abbildung 19.36 Die Ausgabe des Beispiels »BorderSample«


Galileo Computing - Zum Seitenanfang

19.10.7 Die »Image«-Komponente Zur nächsten ÜberschriftZur vorigen Überschrift

Mit dem Image-Control lassen sich Grafiken in einem Window anzeigen. Die wichtigste Eigenschaft ist Source. Dieser übergeben Sie den relativen oder absoluten Pfad einer Grafikdatei. Image ermöglicht die Anzeige der folgenden Bildtypen: .BMP, .GIF, .ICO, .JPG, .PNG, .WDP und .TIFF.

Unterscheiden sich die Größe des Image-Controls und die der Grafik, können Sie mit den Eigenschaften Stretch und StretchDirection festlegen, wie die Grafik gestreckt werden soll. StretchDirection erlaubt die Werte Both, DownOnly und UpOnly. Mit DownOnly wird das Bild nur verkleinert dargestellt, mit UpOnly nur vergrößert, und Both ermöglicht beide Änderungen. Letzteres ist auch die Standardvorgabe.

Ist Stretch auf None eingestellt, wird das Bild ausschließlich in seiner Originalgröße dargestellt. Mit Fill wird das Bild so skaliert, dass es den Bereich des Image-Steuerelements komplett einnimmt. UniFormFill agiert ähnlich, achtet aber darauf, dass die Proportionen erhalten bleiben. Leere Flächen innerhalb des Steuerelements verbleiben nicht. Uniform vergrößert oder verkleinert das Bild in der Weise, dass die Proportionen erhalten bleiben. Möglicherweise bleiben dabei aber wieder Flächen im Image-Steuerelement frei.

Abbildung 19.37 zeigt, wie sich das Strecken eines Bildes auf die Darstellung auswirkt. Der Abbildung liegt der folgende Code zugrunde:


<WrapPanel>
  <Image Source="Images/Egypt.JPG" Margin="10" Height="200" />
  <Image  Source="Images/Egypt.JPG" Margin="10" Height="200" 
          Width="300" Stretch="Fill" />
</WrapPanel>

Abbildung 19.37 Bildanzeige normal und gestreckt


Galileo Computing - Zum Seitenanfang

19.10.8 Grafik zur Laufzeit laden topZur vorigen Überschrift

Wenn Sie mittels Code eine Bitmap laden, kommt die Klasse BitmapImage ins Spiel, die im Namespace System.Windows.Media.Imaging definiert ist. Der Ladevorgang wird zunächst mit der Methode BeginInit initialisiert und mit EndInit abgeschlossen.

Das BitmapImage-Objekt erwartet in der Eigenschaft UriSource die Angabe der Datenquelle, die als Objekt vom Typ Uri übergeben wird. Dem Uri-Konstruktor übergeben Sie den Pfad zu der Bitmap, und Sie teilen ihm darüber hinaus mit, ob es sich um eine relative oder absolute Pfadangabe handelt.

Der Code in der XAML-Datei lautet:


<WrapPanel>
  <Image Name="MyImage" />
</WrapPanel>

Das Bild soll beim Starten des Windows geladen werden. Dazu bietet sich das Ereignis Loaded an:


private void Window_Loaded(object sender, RoutedEventArgs e) {
  BitmapImage bitmap = new BitmapImage();
  bitmap.BeginInit();
  bitmap.UriSource = new Uri("Images/Egypt.jpg", UriKind.Relative);
  bitmap.EndInit();
  MyImage.Source = bitmap;
}



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