Style-Klasse
Inhaltsverzeichnis reduzieren
Inhaltsverzeichnis erweitern

Format Class

Enthält Eigenschaftensetter, die von Instanzen eines Typs gemeinsam verwendet werden können. Ein Style wird normalerweise in einer Ressourcenauflistung deklariert, damit diese freigegeben und zum Anwenden von Steuerelementvorlagen und anderen Formaten eingesetzt werden kann.

Vererbung

Object
  DependencyObject
    Style

Syntax


public sealed class Style : DependencyObject


<Style .../>
-or-
<Style ...>
  oneOrMoreSetters
</Style>

XAML Values

oneOrMoreSetters

Ein oder mehrere Setter-Objektelemente.

Attribute

[ContentProperty("Name=Setters")]
[MarshalingBehavior(Agile)]
[Threading(Both)]
[Version(0x06020000)]
[WebHostHidden()]

Member

StyleKlasse hat diese Membertypen:

Konstruktoren

StyleKlasse hat diese Konstruktoren.

KonstruktorBeschreibung
Style() Initializes a new instance of the Style class, with no initial TargetType and an empty Setters collection.
Style(TypeName) Initializes a new instance of the Style class, with a specified initial TargetType and an empty Setters collection.

 

Methoden

The Style Klasse hat diese Methoden. Es erbt auch Methoden von Object Klasse.

MethodeBeschreibung
ClearValue Clears the local value of a dependency property. (Geerbt von DependencyObject)
GetAnimationBaseValue Returns any base value established for a dependency property, which would apply in cases where an animation is not active. (Geerbt von DependencyObject)
GetValue Returns the current effective value of a dependency property from a DependencyObject. (Geerbt von DependencyObject)
ReadLocalValue Returns the local value of a dependency property, if a local value is set. (Geerbt von DependencyObject)
Seal Locks the style so that the TargetType property or any Setter in the Setters collection cannot be changed.
SetValue Sets the local value of a dependency property on a DependencyObject. (Geerbt von DependencyObject)

 

Eigenschaften

Der StyleKlasse hat diese Eigenschaften.

EigenschaftZugriffstypBeschreibung

BasedOn

Lese-/SchreibzugriffGets or sets a defined style that is the basis of the current style.

Dispatcher

SchreibgeschütztGets the CoreDispatcher that this object is associated with. (Geerbt von DependencyObject)

IsSealed

SchreibgeschütztGets a value that indicates whether the style is read-only and cannot be changed.

Setters

SchreibgeschütztGets a collection of Setter objects.

TargetType

Lese-/SchreibzugriffGets or sets the type for which the style is intended. TargetType can be used to declare an implicit style resource if there's no resource key specified.

 

Hinweise

Ein Style entspricht im Grunde einer Auflistung von Eigenschafteneinstellungen, die auf eine oder mehrere Instanzen eines bestimmten Typs angewendet werden, der über solche Eigenschaften verfügt. Ein Style enthält eine Auflistung, die mindestens ein Setter-Objekt enthält. Jedes Setter-Objekt hat eine Property- und eine Value-Eigenschaft. Die Property ist der Name der Eigenschaft des Elements, auf das der Stil angewendet wird. Value ist der Wert, der für die Eigenschaft übernommen wird.

Zum Anwenden eines Style muss das Zielobjekt ein DependencyObject sein. Die Eigenschaft, auf die jeder Setter als ein Property-Wert verweist, muss eine Abhängigkeitseigenschaft sein.

Wenn Sie einen Style erstellen, müssen Sie die TargetType-Eigenschaft festlegen. Andernfalls wird eine Ausnahme ausgelöst.

Wenn Sie einen Wert für die gleiche Eigenschaft in einem Style und auch für ein Element direkt festlegen, hat entsprechend der direkt für das Element festgelegte Wert Priorität. Weitere Informationen finden Sie unter Übersicht über Abhängigkeitseigenschaften, insbesondere im Abschnitt "Rangfolge von Abhängigkeitseigenschaftswerten".

Definiert einen Style als XAML-Ressource.

Ein Style wird fast immer in XAML als Ressource in ResourceDictionary definiert.

  • Für ein Style, das nur von anderen UI-Elementen verwendet wird, die auf derselben XAML-Seite definiert werden, definieren Sie das Style in der Regel in der Auflistung FrameworkElement.Resources (Page.Resources, wenn das Stammelement eine Page ist).
  • Für ein Style, das von mehr als einer Seite in der Anwendung verwendet wird, definieren Sie das Style in der Regel in der Auflistung Application.Resources. Alternativ haben Sie möglicherweise eine separate XAML-Datei für die App, die Sie in Application.Resources als MergedDictionaries-Wert aufnehmen.
  • Die meisten UI-Elemente verfügen über einen Standardstil, der von der Windows-Runtime definiert wird. Kopien der Standardstile können in der XAML-Datei zur Entwurfshilfe namens generic.xaml angezeigt werden, die technisch gesehen keine Ressourcendatei für Apps ist, obwohl sie über eine solche Struktur verfügt. Sie können separate Teile dieser Datei als Ausgangspunkt in die XAML der App kopieren, wenn Sie Kopien von Stilen mit aktivierten Tools bearbeiten. Sobald Sie jedoch eine solche Kopie erstellen, muss sie einer der Resources-Auflistungen hinzugefügt werden, oder es muss indirekt über MergedDictionaries darauf zugegriffen werden. In allen diesen Fällen wird die geänderte XAML, die den Standard überschreibt, als Teil der App übernommen.

Windows 8:  Wenn Sie die Vorlage eines vorhandenen Steuerelements in Windows 8-XAML ändern, ändern Sie manchmal auch die Style-Elemente aus der StandardStyles.xaml-XAML-Datei, die in den meisten App-Vorlagen enthalten ist. StandardStyles.xaml wird von den app.xaml-Vorlagendateien als MergedDictionaries-Quelldatei referenziert. Vorlagen für ab Windows 8.1 bereitgestellte Apps verwenden StandardStyles.xaml nicht mehr.

Ein von Style definiertes Element in einem ResourceDictionary benötigt kein x:Key-Attribut oder x:Name-Attribut. Dies ist normalerweise eine Voraussetzung für eine XAML-Ressource. Ein Style, das so definiert wurde, verwendet seinen TargetType-Eigenschaftenwert als impliziten Schlüssel und wird auch als implizites Format bezeichnet.

Weitere Informationen zum Verwenden von XAML-Ressourcenwörterbüchern finden Sie unter ResourceDictionary- und XAML-Ressourcenverweise.

Stile und Vorlagen

Sie können Setter in einem Style verwenden, um Werte auf eine beliebige Abhängigkeitseigenschaft anzuwenden. Mit dem Setter für die Template-Eigenschaft einer von Control abgeleiteten Klasse wird jedoch der Großteil des XAML-Markups in einem typischen Style gebildet. Der Value für einen Setter mit Property="Template" wird fast immer als ein Eigenschaftenelement angegeben, das ein ControlTemplate-Objektelement enthält.

Wenn Style verwendet wird, um eine Steuerelementvorlage zu definieren, sollten der TargetType des Style-Elements und der TargetType des ControlTemplate-Elements für den zugehörigen Control.Template-Setter immer den gleichen Wert verwenden.

Der Setter Template definiert die Basisvorlage-Benutzeroberflächendefinition für eine Steuerelementinstanz, in der diese Vorlage angewendet wird. Außerdem sind die visuellen Zustände für ein Steuerelement und andere zustandsbasierte UI-Definitionen wie Standarddesignübergänge enthalten. Für ein komplexes Steuerelement wie ListBox kann die darin enthaltene Standardvorlage Style und ControlTemplate Hunderte von XAML-Zeilen umfassen. Weitere Informationen zur Rolle von Style in den Steuervorlagenenszenarien, finden Sie unter Schnellstart: Steuerelementvorlagen.

Die Vorlage für ein Steuerelement enthält häufig visuelle Zustände, die die Darstellung des Steuerelements als Antwort auf logische Zustände ändern. Beispielsweise kann eine Button eine anderes Erscheinungsbild haben, wenn sie aktiviert wird, indem ein neuer visueller Zustand aus ihrer Vorlage angewendet wird und alle Darstellungsänderungen aus XAML und nicht aus Code stammen können. Weitere Informationen zur Funktionsweise visueller Zustände und zu deren Änderung sowie zum Definieren von Zuständen für benutzerdefinierte Steuerelemente finden Sie unter Storyboard-Animationen für visuelle Zustände und Schnellstart: Steuerelementvorlagen.

Stile und Laufzeitverhalten

Sie können die Werte einzelner Eigenschaften ändern, die von einem Style zur Laufzeit festgelegt werden, und die neuen Werte überschreiben die Setters-Werte. Beispielsweise können Sie die Template-Eigenschaft zur Laufzeit festlegen, auch wenn diese von einem Stil definiert wurde.

Sie können die Eigenschaften von Style zur Laufzeit anpassen, jedoch nur, wenn dieser Stil auf nichts angewendet wurde und nur als Ressource existiert, die nicht implizit verwendet wird. Sie können beispielsweise der Auflistung unter Setters Setter für einen Stil, der in Resources vorhanden ist, mit einem x:Key-Attribut hinzufügen. Dieser verfügt jedoch über keinen StaticResource-Wert an anderer Stelle in XAML, der auf diesen Stil verweist. Sobald jedoch ein Verweis für einen Style hergestellt wird und dieser für Werte durch geladene Objekte verwendet wird, sollte der Style als versiegelt betrachtet werden. Sie können diesen versiegelten Zustand erkennen, indem Sie den Wert der IsSealed-Eigenschaft auf den Style überprüfen. Wenn es true ist, wird das Format versiegelt und Sie können keine Eigenschaften dieses Objekts oder die Setter-Teilwerte darin ändern. Der Zeitpunkt, wenn ein Stil verwendet und versiegelt wird, kann auch erkannt werden, wenn das Objekt, in dem auf den Style verwiesen wird, sein Loaded-Ereignis auslöst.

BasedOn-Stile

Sie können einen neuen Stil auf Grundlage eines bestehenden Stils erstellen, der von der Anwendung oder von den Standardstilen der Windows-Runtime-Steuerelemente definiert wird. Zu diesem Zweck können Sie die BasedOn-Eigenschaft verwenden. Dies reduziert die Verdoppelung in der XAML und erleichtert die Ressourcenverwaltung. Jeder Stil unterstützt nur einen BasedOn-Stil. Weitere Informationen finden Sie unter BasedOn oder Steuerelemente für die Formatierung.

Implizite Stile

Sie können Stile so definieren, dass ein Style implizit von allen Objekten desselben TargetType verwendet wird, ohne dass jede Instanz eines solchen Objekts auf den Style als FrameworkElement.Style-Wert besonders verweisen muss. Wenn eine <Style>-Ressource in einem ResourceDictionary ohne ein -x:Key-Attribut deklariert wird, verwendet der x:Key -Wert den Wert der TargetType-Eigenschaft. Wenn Sie den Stil implizit festlegen, wird der Stil nur auf die Typen angewendet, die exakt mit TargetType übereinstimmen, nicht auf Elemente, die vom TargetType-Wert abgeleitet wurden. Wenn Sie z. B. implizit ein Format für alle ToggleButton-Steuerelemente in der Anwendung erstellen und die Anwendung ToggleButton- und CheckBox -Steuerelemente enthält (CheckBox leitet sich von ToggleButton ab), wird das implizite "ToggleButton"-Format nur auf die ToggleButton-Steuerelemente angewendet.

Hinweise zur XAML-Syntax

Setters ist die XAML-Inhaltseigenschaft für Style, sodass Sie eine implizite Auflistungssyntax wie <Style><Setter .../><Setter .../></Style> verwenden können.

Die Verwendung der Style-Klasse in Code (z. B. um einen Konstruktor aufzurufen und die Setter-Werte einzeln zu erstellen) ist sehr selten. Stile werden für Vorlagen verwendet und Vorlagen sollten zur XAML-Ladezeit verfügbar sein. Jeder in Code erstellte Style ist daher in der Regel nicht rechtzeitig verfügbar, um auf die Steuerelemente in einer UI angewendet zu werden.

Beispiele

In diesem Beispiel werden zwei Stile erstellt: einer für einen TextBlock und einer für ein TextBox. Jeder Stil wird auf zwei Instanzen eines Steuerelements angewendet, um die einheitliche Darstellung von TextBlock und TextBox zu gewährleisten. Im Beispiel wird die FrameworkElement.Style-Eigenschaft jedes Steuerelements durch Verweis auf den Style als StaticResource festgelegt.

Beachten Sie, dass im Stil für TextBox die Margin-Eigenschaft auf "4" gesetzt ist. Das heißt, dass die TextBox an allen Seiten einen Rand von 4 hat. Um die Länge vom zweiten TextBlock auszugleichen, das kürzer ist als das erste TextBlock (Nachname nimmt weniger Platz in Anspruch als Vorname), wird der Margin-Eigenschaft vom zweiten TextBox der Wert "6,4,4,4" zugewiesen. Das zweite TextBox hat nun einen anderen Rand als der zugehörige Stil festlegt, damit es sich horizontal am ersten TextBox ausrichtet.


<StackPanel>
  <StackPanel.Resources>
    <!--Create a Style for a TextBlock to specify that the
              Foreground equals Navy, FontSize equals 14, and
              VerticalAlignment equals Botton.-->
    <Style TargetType="TextBlock" x:Key="TextBlockStyle">
      <Setter Property="Foreground" Value="Navy"/>
      <Setter Property="FontSize" Value="14"/>
      <Setter Property="VerticalAlignment" Value="Bottom"/>
    </Style>

    <!--Create a Style for a TextBlock that specifies that
              the Width is 200, Height is 20, Margin is 4,
              Background is LightBlue, and FontSize is 14.-->
    <Style TargetType="TextBox" x:Key="TextBoxStyle">
      <Setter Property="Width" Value="200"/>
      <Setter Property="Height" Value="30"/>
      <Setter Property="Margin" Value="4"/>
      <Setter Property="FontSize" Value="14"/>
      <Setter Property="Background">
        <Setter.Value>
          <LinearGradientBrush StartPoint="0,0.5" EndPoint="1,0.5">
            <GradientStop Color="White" Offset="0.0"/>
            <GradientStop Color="LightBlue" Offset="0.5"/>
            <GradientStop Color="Navy" Offset="1"/>
          </LinearGradientBrush>
        </Setter.Value>
      </Setter>
    </Style>
  </StackPanel.Resources>

  <!--Apply the TextBlockStyle and TextBoxStyle to each 
          TextBlock and TextBox, respectively.-->
  <StackPanel Orientation="Horizontal">
    <TextBlock Style="{StaticResource TextBlockStyle}">
              First Name:
          </TextBlock>
    <TextBox Style="{StaticResource TextBoxStyle}"/>
  </StackPanel>
  <StackPanel Orientation="Horizontal">
    <TextBlock Style="{StaticResource TextBlockStyle}">
              Last Name:
          </TextBlock>
    <TextBox Style="{StaticResource TextBoxStyle}"  
                   Margin="6,4,4,4"/>
  </StackPanel>
</StackPanel>


In diesem Beispiel werden zwei Stilelemente erstellt. Der TargetType für das erste Stilelement wird auf TextBox, und der TargetType für das zweite Stilelement wird auf Button festgelegt. Diese werden dann als der implizite Stil auf ein TextBox-Steuerelement und ein Button-Steuerelement angewendet.


<StackPanel>
    <StackPanel.Resources>
        <Style TargetType="TextBox">
            <Setter Property="Foreground" Value="Pink" />
            <Setter Property="FontSize" Value="15" />                
        </Style>
        
        <Style TargetType="Button">
            <Setter Property="Foreground" Value="Black" />
            <Setter Property="Background" Value="Yellow" />
        </Style>
    </StackPanel.Resources>
    
    <TextBox Height="30" Width="120" Margin="2" Text="TextBoxStyle" />
    <Button Height="30" Width="100" Margin="2" Content="ButtonStyle" />
</StackPanel>


Dieses Beispiel erstellt einen Style, namens InheritedStyle, der auf einem Style namens BaseStyle basiert. InheritedStyle erbt den Background-Wert von Yellow von BaseStyle und fügt den Foreground-Wert Blue hinzu.


<StackPanel>
    <StackPanel.Resources>
        <Style x:Key="BaseStyle" TargetType="Button">
            <Setter Property="Background" Value="Yellow" />
        </Style>
        <!--Create a Style based on BaseStyle-->
        <Style x:Key="InheritedStyle" TargetType="Button" BasedOn="{StaticResource BaseStyle}">
            <Setter Property="Foreground" Value="Red" />
        </Style>
    </StackPanel.Resources>
    <!--A button with default style-->
    <Button Content="HelloWorld" />
    <!--A button with base style-->
    <Button Content="HelloWorld" Style="{StaticResource BaseStyle}" />
    <!--A button with a style that is inherited from the BaseStyle-->
    <Button Content="HelloWorld" Style="{StaticResource InheritedStyle}" />
</StackPanel>


Anforderungen

Mindestens unterstützter Client

Windows 8 [Nur Windows Store-Apps]

Mindestens unterstützter Server

Windows Server 2012 [Nur Windows Store-Apps]

Namespace

Windows.UI.Xaml
Windows::UI::Xaml [C++]

Metadaten

Windows.winmd

Siehe auch

DependencyObject
ControlTemplate
Setter
Übersicht über Abhängigkeitseigenschaften
ResourceDictionary- und XAML-Ressourcenverweise
Schnellstart: Steuerelemente für die Formatierung
Schnellstart: Steuerelementvorlagen

 

 

Anzeigen:
© 2016 Microsoft