Control.DefaultStyleKey Eigenschaft

Definition

Ruft den Schlüssel ab, der auf das Standardformat für das Steuerelement verweist, oder legt diesen fest. Autoren benutzerdefinierter Steuerelemente verwenden diese Eigenschaft, um die Standardeinstellung für den Stil zu ändern, den ihr Steuerelement verwendet.

protected:
 property Platform::Object ^ DefaultStyleKey { Platform::Object ^ get(); void set(Platform::Object ^ value); };
IInspectable DefaultStyleKey();

void DefaultStyleKey(IInspectable value);
protected object DefaultStyleKey { get; set; }
Protected Property DefaultStyleKey As Object

Eigenschaftswert

Object

Platform::Object

IInspectable

Der Schlüssel, der auf das Standardformat für das Steuerelement verweist. Um als Teil der Designstilsuche ordnungsgemäß zu funktionieren, wird erwartet, dass dieser Wert ein System.Type-Wert ist.

Hinweis

Visual C++-Komponentenerweiterungen (C++/CX) verwenden eine Zeichenfolge, die den qualifizierten Namen des Typs darstellt. Dies basiert jedoch auf generiertem Code, der einen TypeName erzeugt, nachdem ein XAML-Compiler darauf zugegriffen hat. siehe Hinweise.

Hinweise

DefaultStyleKey ist eine der wenigen geschützten Eigenschaften in der Windows-Runtime-API. Sie ist nur für die Verwendung von Steuerelementautoren vorgesehen, die eine vorhandene Steuerelementklasse unterklassieren und daher über den erforderlichen Zugriff zum Festlegen dieser Eigenschaft verfügen. Für viele benutzerdefinierte Steuerelementszenarien, in denen Sie DefaultStyleKey festlegen, überschreiben Sie auch OnApplyTemplate.

Der Rückgabetyp von DefaultStyleKey wird in der Syntax lose als Object eingegeben, aber das XAML-Stilsystem erwartet, dass der Wert einen Typverweis bereitstellt:

  • Für ein Steuerelement, dessen Logik in C# geschrieben ist, sollte der Wert von DefaultStyleKey ein instance system.Type sein. In der Regel legen Sie diesen Wert im Standardkonstruktor fest:
public CustomControl1()
{
    this.DefaultStyleKey = typeof(CustomControl1);
}
  • Für ein Steuerelement, dessen Logik in Microsoft Visual Basic geschrieben ist, sollte der Wert von DefaultStyleKey ein instance System.Type sein. In der Regel legen Sie diesen Wert im Standardkonstruktor fest:
Public Sub New()
    Me.DefaultStyleKey = GetType(CustomControl1)
End Sub
CustomControl1::CustomControl1() // public: in the header.
{
	DefaultStyleKey(winrt::box_value(L"App1.CustomControl1"));
}
  • Für ein Steuerelement, dessen Logik in Visual C++-Komponentenerweiterungen (C++/CX) geschrieben ist, sollte der Wert von DefaultStyleKey eine namespacequalifizierte Zeichenfolge sein, bei der es sich um den Namen der benutzerdefinierten Steuerelementklasse handelt. In der Regel legen Sie diesen Wert im Standardkonstruktor fest:
CustomControl1::CustomControl1() //public: in the header
{
    DefaultStyleKey = "App1.CustomControl1";
}

Hinweis

Letztendlich reicht die Zeichenfolge allein nicht aus, um einen Verweis auf Visual C++-Komponentenerweiterungen (C++/CX) zu unterstützen. Wenn Sie die Optionen Add/New Item/Templated Control in Projektmappen-Explorer verwenden, generieren die Vorlagen und die Unterstützung für Visual C++-Komponentenerweiterungen (C++/CX) und XAML Klassen, die IXamlMetadataProvider-Informationen bereitstellen. Der XAML-Compiler kann auf diesen Code zugreifen, wenn der XAML geladen wird, und verwendet ihn zum Überprüfen und Erstellen von Typen und Membern sowie zum Einbinden der partiellen Klassen. Soweit Sie das, was Sie in Ihrem eigenen App-Code definieren, ist die Zeichenfolge alles, was Sie benötigen. Aber wenn Sie neugierig sind, können Sie einen Blick auf die Dateien XamlTypeInfo.g.h und XamlTypeInfo.g.cpp werfen, die generiert werden.

Steuerelementautoren konnten keinen Wert für DefaultStyleKey angeben, aber das ist ungewöhnlich. Das Ergebnis wäre, dass die Standardformatvorlage der von der Basisklasse definiert ist. In einigen Fällen (z. B. für ContentControl) ist der Wert NULL. Auch wenn Sie sich dafür entscheiden, den Wert nicht neu zu definieren, stellen Sie sicher, dass der ursprüngliche Standardstil zum Rendern des Steuerelements nützlich ist.

Wenn ein XAML-Steuerelement geladen wird, wird der Renderingprozess gestartet, und das System sucht nach der richtigen Vorlage, die angewendet werden soll. Geladen wird die XAML-Standardformatvorlage für das Steuerelement, einschließlich seiner Vorlage. Im Windows-Runtime ist eine interne Kopie aller Standardstile für alle XAML-Steuerelemente enthalten, die vom Windows-Runtime definiert werden. Der Typverweis in DefaultStyleKey teilt dem System mit, welche XAML-Ressource als dieser Stil geladen werden soll. Im XAML-Format werden die Stile tatsächlich nach Typ schlüsseln, obwohl es in Windows-Runtime XAML keinen Mechanismus gibt, der einen Typverweis explizit definiert. Aber für jeden TargetType-Wert , der das Attribut ist, das den Schlüssel für die Suche enthält, wird implizit angenommen, dass er einen Typverweis in Form einer Zeichenfolge darstellt. Beispielsweise ist DefaultStyleKey aus einer Schaltfläche eine System.Type-instance wobei der Name "Button" und FullName "Windows.UI.Xaml.Controls.Button" ist. Das System verwendet diese Informationen, um den Stil aus den internen Ressourcen zu laden, die über TargetType="Button"verfügen.

Benutzerdefinierte Steuerelemente befinden sich in der Regel nicht im standardmäßigen XAML-Namespace. Stattdessen befinden sie sich in einem XAML-Namespace, der über eine using:- Anweisung verfügt, um auf den Codenamespace der App zu verweisen. Standardmäßig erstellen Projekte das Präfix "local:", das ihnen diesen Namespace zuordnet. Sie können auch andere XAML-Namespaces zuordnen, um auf zusätzliche Codenamespaces für Steuerelemente oder anderen Code zu verweisen, den Ihre App definiert.

Das Präfix "local:" (oder ein anderer Namespace, der dem Code und den Namespaces Ihrer App zugeordnet ist) sollte dem Namen Ihres benutzerdefinierten Steuerelements vorangestellt werden, wenn es sich in XAML als TargetType-Wert befindet. Dies wird auch bereits durch die Startvorlagen für Sie erledigt; Wenn Sie ein neues Steuerelement hinzufügen, wird eine generic.xaml-Datei angezeigt, die nur eine Formatvorlage enthält. Diese Formatvorlage weist den Wert TargetType auf, der eine Zeichenfolge ist, die mit "local:" beginnt und durch den Namen ergänzt wird, den Sie für Ihre benutzerdefinierte Steuerelementklasse ausgewählt haben. Um den vorherigen Beispielen zu entsprechen, in denen DefaultStyleKey in einer CustomControl1 Definition festgelegt wurde, sehen Sie ein Element für <Style TargetType="local:CustomControl1"> , das in der ersten generic.xaml-Datei definiert ist, und dieser Stil definiert die Steuerelementvorlage sowie andere Eigenschaften.

Hinweis

Das Präfix "local:" ist mit dem XAML-Code isoliert, in dem es definiert und verwendet wird. XAML-Namespaces und die Präfixe haben nur innerhalb von XAML Bedeutung und sind für jede XAML-Datei eigenständig. DefaultStyleKey-Werte im Code enthalten die Präfixe nicht.

Gilt für:

Weitere Informationen