TargetType-Eigenschaft
Inhaltsverzeichnis reduzieren
Inhaltsverzeichnis erweitern

Style.TargetType Property

Ruft den Typ ab, für den der Stil vorgesehen ist, oder legt ihn fest. Dieser Wert kann außerdem zum Deklarieren einer impliziten Stilressource verwendet werden, wenn darüber hinaus kein Ressourcenschlüssel angegeben ist.

Syntax


public Type TargetType { get; set; }


<Style TargetType="typeName"/>

XAML Values

typeName

Eine Zeichenfolge, die den Typnamen des Typs angibt, bei dem der Stil übernommen wird. Diese kann ein xmlns-Präfix für benutzerdefinierte Typen umfassen (siehe Hinweise).

Eigenschaftswert

Typ: System.Type [.NET] | TypeName [C++]

Der Typ von Objekt, auf das der Stil angewendet wird.

Hinweise

Ein TargetType-Wert ist immer dann erforderlich, wenn Sie ein Style verwenden oder deklarieren. Es ist kein Standardwert vorhanden. Sogar eine Style-Klasse, die als Inlinewert der FrameworkElement.Style-Eigenschaft verwendet wird, benötigt einen TargetType-Wert.

In der Regel geben Sie einen TargetType-Wert durch ein XAML-Attribut im Style-Element an. Wenn das Typkonzept in XAML eingerichtet ist, nimmt seine Bedeutung einige Aspekte dessen an, wie Typen in XAML dargestellt werden.

Alle Präfixe, die erforderlich wären, um über eine XAML-Elementverwendung auf einen Typ zu verweisen, sollten im TargetType-Attributwert enthalten sein. Wenn ein Stil auf einen benutzerdefinierten Typ abzielt, der in einem Codenamespace definiert ist, der dem Präfix "lokal:" zugeordnet ist, sollte der Attributwert TargetType für die Schriftart dieses Typs das gleiche Präfix enthalten, das dem Typnamen vorangestellt ist. Dieses Verhalten wird vom integrierten Zeichenfolgentyp-Konvertierungsverhalten im Windows-Runtime XAML-Parser aktiviert.

Nachdem Sie beim Definieren von Stilen für benutzerdefinierte Typen ein Zuordnungspräfix für einen TargetType eingeschlossen haben, schließen Sie kein Präfix im Property-Wert eines Setter innerhalb dieses Style ein.

Der Wert, den Sie für TargetType angeben, ändert das Suchverhalten für jeden Setter.Property-Wert, den Sie innerhalb des Stils angeben. Insbesondere wird von den Abhängigkeitseigenschaften, die Sie über den Namen für einen Setter.Property-XAML-Attributwert referenzieren, erwartet, dass sie auf dem TargetType-Typ oder einer beliebigen Vorgängerklasse vorhanden sind. Wenn beispielsweise der TargetType, den Sie angeben, Button ist und einer der XAML-Attributwerte Setter.Property im Style"Hintergrund" lautet, der die Eigenschaft Control.Background auflöst (Control ist drei Ebenen über Button in der Klassenvererbung und Button erbt alle Eigenschaften von Control). Der TargetType-Wert wird in der Regel mit den gleichen UI-Elementnamen angegeben, die Sie im typischen UI-Markup verwenden. Sie benennen normalerweise keine Vorgängerklasse (obwohl dies eigentlich zulässig ist).

Wenn der Style eine Setter enthält, die eine Steuerelementvorlage (einen Wert für die Template-Eigenschaft ) deklariert, sollte der TargetType-Wert des übergeordneten Style-Elements mit dem TargetType-Wert des enthaltenen ControlTemplate-Elements übereinstimmen.

Tipp  Wenn Sie mit einer Microsoft. NET-Sprache (C# oder Microsoft Visual Basic) programmieren, wird der TypeName-Typ als System.Type abgebildet. Beim Programmieren mit C#C#, verwenden Sie normalerweise den typeof-Operator, um Verweise auf den System.Type eines Typs abzurufen, der auf einem Typnamen als Zeichenfolge basiert. Verwenden Sie GetType in Visual Basic.

Implizite Stile

Stile werden fast immer als XAML-Ressourcen deklariert, die für jedes UI-Element der App, die diesen Stil referenziert, freigegeben und darauf angewendet werden. Um als Ressource deklariert zu werden, müssen alle XAML-Elemente einschließlich Style-Elemente einen Schlüssel in der Ressourcenauflistung besitzen, die jede Ressource für die Suche zur Laufzeit differenziert. Das Style-Element (und auch die verschiedenen Vorlagenelemente, wie ControlTemplate) unterstützen eine Funktion mit der Bezeichnung implizite Stile. Für ein implizites Format dient der Wert, den Sie für den Wert TargetType bereitstellen, auch als Schlüssel für dieses Format in seinem Ressourcenauflistungsbereich. Außerdem muss der Wert x:Key-Attribut nicht angegeben werden. (Im Gegensatz dazu benötigen die meisten anderen Elemente, die Sie innerhalb einer Ressourcenauflistung deklarieren, einen expliziten x:Key-Wert. Sie erhalten eine Entwurfszeit oder Parserfehler, die dies erzwingen.)

Ein Format, das mit dem impliziten Format deklariert wird, wird dann als Style-Wert für alle UI-Instanzen verwendet, die speziell dem Typ entsprechen, der mit dem TargetType des impliziten Formats übereinstimmt. Steuerelemente müssen auf einen Stil nicht mithilfe eines Style-Attributwerts und einem StaticResource-Verweis auf einen Schlüssel zum Abrufen dieses Verhaltens verweisen; es ist ein implizites Verhalten, wenn diese Steuerelemente mit dem Typ eines vorhandenen impliziten Stils übereinstimmen.

Implizite Stile können nicht auf Elemente angewendet werden, die Untertypen des Typs sind, der als Wert TargetType angegeben ist. Wenn Sie beispielsweise einen impliziten Stil für ToggleButton-Steuerelemente deklarieren und die App über CheckBox-Steuerelemente (CheckBox wird von ToggleButton abgeleitet) verfügt, wird der Stil speziell auf ToggleButton-Steuerelemente, jedoch nicht auf CheckBox-Steuerelemente angewendet.

Die Windows-Runtime definiert implizite Standardstile für jedes praktische Benutzeroberflächenelement, das Teil der Runtime Windows-API ist. Dies ist notwendig, da diese Stile die visuellen Objekte für Elemente (besonders Vorlagen) definieren, und ein Element ohne grafische Elemente nicht in der Benutzeroberfläche erscheint oder Einfluss auf das Layout hat. All diese impliziten Formate können in der XAML-Datei zur Entwurfshilfe namens generic.xaml angezeigt werden. Die Tools, die Sie verwenden, um XAML zu bearbeiten, können einzelne Teile dieser Datei als Ausgangspunkt in XAML der App kopieren, wenn Sie Kopien von Stilen bearbeiten, wie durch die Tools aktiviert. Innerhalb der standardmäßigen impliziten Stile gibt es viele Ebenen von Ressourcenverweisen sowie Designunterstützung mit der ThemeResource-Markuperweiterung und designspezifischen Pinseln oder anderen Ressourcen. Sie können jeden impliziten Stil überschreiben, der andernfalls von der Windows-Runtime als standardmäßig implizit definierter Stil stammen würde. Weitere Informationen finden Sie unter Schnellstart: Steuerelemente für die Formatierung und Schnellstart: Steuerelementvorlagen.

Migrationshinweise

  • Falls Sie XAML für WPF (Windows Presentation Foundation) verwendet haben, dann haben Sie möglicherweise eine x:Type-Markuperweiterung genutzt, um alle XAML-Werte auszufüllen, die über System.Type verfügen. x:Type wird vom Windows-Runtime-XAML-Parser nicht unterstützt. Stattdessen sollten Sie ohne Verwendung von Markuperweiterungen auf den Typnamen verweisen, da jede erforderliche XAML-Typumwandlung bereits durch das interne Umwandlungsverhalten des XAML-Parsers erfolgt.

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.


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


Anforderungen

Mindestens unterstützter Client

Windows 8

Mindestens unterstützter Server

Windows Server 2012

Namespace

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

Metadaten

Windows.winmd

Siehe auch

Style

 

 

Anzeigen:
© 2017 Microsoft