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

Inhaltsverzeichnis
1 Einführung
2 Grundlagen der Sprachsyntax
3 Klassendesign
4 Weitere Datentypen
5 Multithreading
6 Collections und LINQ
7 Eingabe und Ausgabe
8 Anwendungen: Struktur und Installation
9 Code erstellen und debuggen
10 Einige Basisklassen
11 Windows-Anwendungen erstellen
12 Die wichtigsten Steuerelemente
13 Tastatur- und Mausereignisse
14 MDI-Anwendungen
15 Grafiken mit GDI+
16 Drucken
17 Entwickeln von Steuerelementen
18 Programmiertechniken
19 WPF – Grundlagen
20 Layoutcontainer
21 WPF-Steuerelemente
22 Konzepte von WPF
23 Datenbankverbindung mit ADO.NET
24 Datenbankabfragen mit ADO.NET
25 DataAdapter
26 Offline mit DataSet
27 Datenbanken aktualisieren
28 Stark typisierte DataSets
A Anhang: Einige Übersichten
Stichwort

Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Visual Basic 2008 von Andreas Kuehnel, Stephan Leibbrandt
Das umfassende Handbuch
Buch: Visual Basic 2008

Visual Basic 2008
3., aktualisierte und erweiterte Auflage, geb., mit DVD
1.323 S., 49,90 Euro
Rheinwerk Computing
ISBN 978-3-8362-1171-0
Pfeil 22 Konzepte von WPF
Pfeil 22.1 Abhängige und angehängte Eigenschaften
Pfeil 22.1.1 Abhängige Eigenschaften
Pfeil 22.1.2 Angehängte Eigenschaften
Pfeil 22.2 Ressourcen
Pfeil 22.2.1 Definition
Pfeil 22.2.2 Zeitpunkt der Wertbestimmung
Pfeil 22.2.3 Abrufen von Systemressourcen
Pfeil 22.3 Stile
Pfeil 22.3.1 Einfache Stile
Pfeil 22.3.2 Typisierte Stile
Pfeil 22.4 Trigger
Pfeil 22.4.1 Eigenschaftstrigger
Pfeil 22.4.2 Ereignistrigger
Pfeil 22.4.3 Datentrigger
Pfeil 22.5 Kommandos
Pfeil 22.5.1 Vordefiniert
Pfeil 22.5.2 Beispielanwendung
Pfeil 22.5.3 Kommando-Ziel
Pfeil 22.5.4 Kommandos an Ereignisse binden
Pfeil 22.5.5 Kommandos programmieren
Pfeil 22.6 Datenbindung
Pfeil 22.6.1 Einfache Datenbindung
Pfeil 22.7 Bindungsarten
Pfeil 22.7.1 Aktualisierung der Quelle
Pfeil 22.7.2 Datenbindungsquellen
Pfeil 22.7.3 Auflistungen anbinden


Galileo Computing - Zum Seitenanfang

22.3 Stile Zur nächsten ÜberschriftZur vorigen Überschrift

Stile sind das Mittel der Wahl, um Benutzeroberflächen ein einheitliches Design zu geben. Abbildung 22.3 zeigt drei Buttons mit gleichem Aussehen.

Ohne Stile sieht der XAML-Code für die erste der drei Schaltflächen wie folgt aus:

<Button Height="35">
  <Button.Background>
    <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
      <GradientStop Offset="0.0" Color="Red" />
      <GradientStop Offset="1.0" Color="LightCyan" />
    </LinearGradientBrush>
  </Button.Background>
  <Button.FontSize>18</Button.FontSize>
  Button1
</Button>

Abbildung 22.3 Wiederverwendete Stile

Bis auf die Beschriftung ist der Code für alle drei Buttons identisch. Eine dreifache Kopie der umfangreichen Anweisungen ist unübersichtlich und anfällig für inkonsistente Änderungen, wenn eine der Kopien vergessen wird.

Es ist also besser, Sie definieren einen Stil als Ressource und beziehen sich in den Buttons darauf.


Galileo Computing - Zum Seitenanfang

22.3.1 Einfache Stile Zur nächsten ÜberschriftZur vorigen Überschrift

Stile können innerhalb einer Ressource oder direkt im Element definiert werden. Sie können von untergeordneten Komponenten genutzt werden. Einfacher zu handhaben sind in Ressourcen definierte Stile. Je nach Nutzung wählen Sie eine Anwendungs- oder Window-Ressource.

<Window.Resources>
  <Style x:Key="MyStyle" ... />
</Window.Resources>

Innerhalb eines Style-Elements wird jede Formatvorlage durch ein eigenes Setter-Element spezifiziert. Im Attribut Property wird festgelegt, auf welche Eigenschaft der Stil wirkt; Value gibt den zu verwendenden Wert an. Stile können nur auf abhängige Eigenschaften wirken. Die Eigenschaft wird über ein klassengebundenes schreibgeschütztes Feld vom Typ DependencyProperty spezifiziert.

Das folgende Beispiel formuliert das letzte Beispiel unter Verwendung einfacher Stile:


'...\WPFKonzepte\Stile\Einfach.xaml

<Window ...>
  <Window.Resources>
    <Style x:Key="MyStyle">
      <Setter Property="Control.Height" Value="35" />
      <Setter Property="Control.FontSize" Value="18" />
      <Setter Property="Control.Background">
        <Setter.Value>_$ret_          <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
            <GradientStop Offset="0.0" Color="Red" />
            <GradientStop Offset="1.0" Color="LightCyan" />
          </LinearGradientBrush>
        </Setter.Value>
      </Setter>
    </Style>
  </Window.Resources>
  <StackPanel>
    <Button Style="{StaticResource MyStyle}">Button1</Button>
    <Button Style="{StaticResource MyStyle}">Button2</Button>
    <Button Style="{StaticResource MyStyle}">Button3</Button>
  </StackPanel>
</Window>

Galileo Computing - Zum Seitenanfang

22.3.2 Typisierte Stile topZur vorigen Überschrift

Die bisher definierten Stile sind ein Angebot. Eine Komponente muss explizit deklarieren, dass sie den Stil verwendet. In der Praxis häufiger sind Stile, die das Design aller Komponenten gleichen Typs als Standardvorgabe festlegen, ohne dass eine Komponente die Verwendung des Stils deklarieren muss. Die einzelne Komponente kann selbstverständlich diese Vorgaben durch explizite Werte überschreiben. Der Zieltyp wird im Attribut TargetType des Style-Elements angegeben, zum Beispiel:

<Style TargetType="{x:Type Button}">

Das umgeschriebene Beispiel zeigt die fehlenden Style-Attribute in den Schaltflächen:


'...\WPFKonzepte\Stile\Typisiert.xaml

<Window ...>
  <Window.Resources>
   <Style TargetType="{x:Type Button}">
      <Setter Property="Control.Height" Value="35" />
      <Setter Property="Control.FontSize" Value="18" />
      <Setter Property="Control.Background">
        <Setter.Value>_$ret_          <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
            <GradientStop Offset="0.0" Color="Red" />
            <GradientStop Offset="1.0" Color="LightCyan" />
          </LinearGradientBrush>
        </Setter.Value>
      </Setter>
    </Style>
  </Window.Resources>
  <StackPanel>
    <Button>Button1</Button>
    <Button>Button2</Button>
    <Button>Button3</Button>
  </StackPanel>
</Window>

Allgemeingültige Stile

Je allgemeiner Sie die Typangabe in TargetType halten, auf desto mehr verschiedene Komponenten wird es angewendet. Mit dem Typ Control erfassen Sie alle Steuerelemente, die von Control abgeleitet sind (das heißt fast alle). Allerdings scheint dann die Angabe eines Schlüssels zwingend zu sein, damit der Stil angewendet wird.

Unabhängig von TargetType kann eine Liste von Setter-Elementen Eigenschaften verschiedener Typen spezifizieren, die durch ihre Klasse qualifiziert werden, zum Beispiel Property="Button.ClickMode" und Property="Control.FontSize" in einem Style-Element mit TargetType="{x:Type Control}". Dieselbe Eigenschaft kann innerhalb desselben Style-Elements nicht unterschiedlich für verschiedene Typen gesetzt werden.

Wird ein solcher Mischstil einem Steuerelement zugewiesen, verwendet es nur die Eigenschaften daraus, die auf das Element zutreffen. Alle anderen Eigenschaften werden ignoriert.

Überschreiben einer Stildefinition

Geben Sie in einer Komponente eine Eigenschaft an, die auch in einem Stil definiert ist, überschreibt die Angabe in der Komponente den Stil. Wenn Sie die Definition des ersten Buttons im Beispiel oben durch

<Button Background="Beige">Button1</Button>

ersetzen, wird die Schaltfläche in Beige dargestellt.

Vererben von Stilen

Durch die Angabe eines Stils im Attribut BasedOn in einem Style-Element können Sie diesen beerben. Die Referenzierung erfolgt als Ressource mit statischer oder dynamischer Bindung. Im erbenden Stil können Eigenschaften des Elternstils überschrieben werden. Haben Sie im Basisstil TargetType angegeben, muss der abgeleitete Stil in seinem TargetType-Attribut dieselbe Klasse oder eine davon abgeleitete Klasse verwenden.


'...\WPFKonzepte\Stile\Vererbung.xaml

<Window ...>
  <Window.Resources>
    <Style x:Key="ButtonStyle">
      <Setter Property="Control.Height" Value="35" />
      <Setter Property="Control.FontSize" Value="18" />
      <Setter Property="Control.Background">
        <Setter.Value>_$ret_          <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
            <GradientStop Offset="0.0" Color="Red" />
            <GradientStop Offset="1.0" Color="LightCyan" />
          </LinearGradientBrush>
        </Setter.Value>
      </Setter>
    </Style>
    <Style x:Key="NewButtonStyle" BasedOn="{StaticResource ButtonStyle}">
      <Setter Property="Control.FontFamily" Value="Courier" />
      <Setter Property="Control.FontSize" Value="14" />
    </Style>
  </Window.Resources>
  <StackPanel>
    <Button Style="{StaticResource NewButtonStyle}">Button1</Button>
    <Button Style="{StaticResource ButtonStyle}">Button2</Button>
    <Button Style="{StaticResource NewButtonStyle}">Button3</Button>
  </StackPanel>
</Window>


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 Basic 2008
Visual Basic 2008
Jetzt bestellen


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

 Buchempfehlungen
Zum Katalog: Visual Basic 2012






 Visual Basic 2012


Zum Katalog: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Katalog: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


Zum Katalog: Professionell entwickeln mit Visual C# 2012






 Professionell
 entwickeln mit
 Visual C# 2012


Zum Katalog: Windows Presentation Foundation






 Windows Presentation
 Foundation


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2009
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