Control.DefaultStyleKey Eigenschaft

Definition

Dient zum Abrufen oder Festlegen des Schlüssels, der auf die Standardformatvorlage für das Steuerelement verweist. Autoren von benutzerdefinierten Steuerelementen verwenden diese Eigenschaft, um die Standardeinstellung für die Formatvorlage zu ändern, die 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 die Standardformatvorlage für das Steuerelement verweist. Damit dieser Wert im Rahmen der Designformatsuche ordnungsgemäß funktioniert, wird erwartet, dass es sich bei diesem Wert um einen System.Type-Wert handelt.

Hinweis

C++ verwendet eine Zeichenfolge, die den qualifizierten Namen des Typs darstellt. Dies basiert jedoch auf generiertem Code, der einen TypeName erzeugt, sobald ein XAML-Compiler darauf zugegriffen wurde; siehe Hinweise.

Hinweise

DefaultStyleKey ist eine der wenigen geschützten Eigenschaften in der Windows-Runtime-API. Es ist nur für die Verwendung durch Steuerelementautoren vorgesehen, die eine Unterklassifizierung einiger vorhandener Steuerelementklasse haben und daher über den erforderlichen Zugriff verfügen, um diese Eigenschaft festzulegen. Bei vielen benutzerdefinierten Steuerelementszenarien, in denen Sie DefaultStyleKey festlegen, überschreiben Sie auch OnApplyTemplate.

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

  • Für ein Steuerelement, das seine Logik in C# geschrieben hat, sollte der Wert von DefaultStyleKey eine Instanz von System.Type sein. In der Regel legen Sie diesen Wert im Standardkonstruktor fest:
public CustomControl1()
{
    this.DefaultStyleKey = typeof(CustomControl1);
}
  • Bei einem Steuerelement, das seine Logik in C++ geschrieben hat, sollte der Wert von DefaultStyleKey eine namespacequalifizierte Zeichenfolge sein, die den Namen der benutzerdefinierten Steuerelementklasse darstellt. In der Regel legen Sie diesen Wert im Standardkonstruktor fest:
CustomControl1::CustomControl1() // public: in the header.
{
	DefaultStyleKey(winrt::box_value(L"App1.CustomControl1"));
}

Hinweis

Letztendlich reicht die Zeichenfolge allein nicht aus, um einen C++-Typverweis zu unterstützen. Wenn Sie in Projektmappen-Explorer die Optionen "Hinzufügen/Neues Element/Vorlagensteuerelement" verwenden, generiert die Vorlagen und Unterstützung für C++ und XAML Klassen, die IXamlMetadataProvider-Informationen enthalten. Der XAML-Compiler kann auf diesen Code zugreifen, wenn der XAML geladen wird, und verwendet ihn, um Typen und Member zu überprüfen und zu erstellen und die Partiellen Klassen zu verbinden. Was Sie in Ihrem eigenen App-Code definieren, ist die Zeichenfolge alles, was Sie benötigen. Aber wenn Sie neugierig sind, können Sie sich die xamlTypeInfo.g.h und XamlTypeInfo.g.cpp Dateien ansehen, die generiert werden.

Steuerelementautoren könnten sich entscheiden, keinen Wert für DefaultStyleKey bereitzustellen, aber das ist ungewöhnlich. Das Ergebnis wäre, dass die Standardformatvorlage die von der Basisklasse definierte ist. In einigen Fällen (z. B. für ContentControl) ist der Wert null. Auch wenn Sie den Wert nicht neu definieren möchten, stellen Sie sicher, dass die ursprüngliche Standardformatvorlage für das 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, was geladen wird, ist der XAML-Standardstil für das Steuerelement, einschließlich der Vorlage. Im Windows-Runtime enthalten ist eine interne Kopie aller Standardformatvorlagen für alle XAML-Steuerelemente, die vom Windows-Runtime definiert werden. Der Typverweis in DefaultStyleKey teilt dem System mit, welche benannte XAML-Ressource als diese Formatvorlage geladen werden soll. In XAML-Formularen werden die Stile tatsächlich nach Typ schlüsselt, obwohl in Windows-Runtime XAML kein Mechanismus vorhanden ist, der einen Typverweis explizit definiert. Für jeden TargetType-Wert , bei dem es sich um das Attribut handelt, das den Schlüssel für die Suche enthält, wird jedoch implizit angenommen, dass er einen Typverweis in Form einer Zeichenfolge darstellt. Beispielsweise ist DefaultStyleKey aus einer Schaltfläche eine System.Type-Instanz, in der der Name "Button" lautet, "FullName" ist "Windows". BENUTZEROBERFLÄCHE. Xaml.Controls.Button". Das System verwendet diese Informationen, um die Formatvorlage aus den internen Ressourcen zu laden, die über TargetType="Button".

Benutzerdefinierte Steuerelemente befinden sich in der Regel nicht im Standard-XAML-Namespace. Stattdessen befinden sie sich in einem XAML-Namespace mit einer using: -Anweisung, um auf den Codenamespace der App zu verweisen. Projekte erstellen standardmäßig ein Präfix "local:", das diesen Namespace für Sie 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 namespaces Ihrer App zugeordnet ist) sollte dem Namen des benutzerdefinierten Steuerelements vorangehen, wenn es sich in XAML als TargetType-Wert befindet. Dies geschieht auch bereits für Sie durch die Startvorlagen. Wenn Sie ein neues Steuerelement hinzufügen, wird eine datei "generic.xaml" angezeigt, die nur eine Formatvorlage enthält. Diese Formatvorlage weist den TargetType-Wert auf, der eine Zeichenfolge ist, die mit "local:" beginnt und mit dem Namen, den Sie für Ihre benutzerdefinierte Steuerelementklasse ausgewählt haben, abgeschlossen ist. Um vorherige Beispiele abzugleichen, die DefaultStyleKey in einer CustomControl1 Definition festlegen, wird ein Element für <Style TargetType="local:CustomControl1"> die Definition im start generic.xaml angezeigt, und diese Formatvorlage definiert die Steuerelementvorlage sowie das Festlegen anderer 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 Bedeutung innerhalb von XAML und sind für jede XAML-Datei eigenständig. DefaultStyleKey-Werte im Code enthalten nicht die Präfixe.

Gilt für:

Weitere Informationen