Freigeben über


FrameworkElement.Name Eigenschaft

Definition

Dient zum Abrufen oder Festlegen des identifizierenden Namens des Elements. Der Name stellt einen Verweis bereit, sodass CodeBehind, z. B. Ereignishandlercode, auf ein Markupelement verweisen kann, nachdem es während der Verarbeitung durch einen XAML-Prozessor erstellt wurde.

public:
 property System::String ^ Name { System::String ^ get(); void set(System::String ^ value); };
[System.Windows.Localizability(System.Windows.LocalizationCategory.NeverLocalize)]
public string Name { get; set; }
[<System.Windows.Localizability(System.Windows.LocalizationCategory.NeverLocalize)>]
member this.Name : string with get, set
Public Property Name As String

Eigenschaftswert

Der Name des Elements. Der Standardwert ist eine leere Zeichenfolge.

Implementiert

Attribute

Beispiele

Im folgenden Beispiel wird die Name Eigenschaft im Code festgelegt und anschließend der Name im neu erstellten NameScope durch Aufrufen RegisterNameregistriert. Die hier dargestellte Technik ist eine Anforderung für die Animation mit Storyboards, da Storyboards eine Zielbestimmung erfordern Nameund nicht durch Objektverweis bestimmt werden können.

//  
// Create a Rectangle
//
Rectangle myRectangle = new Rectangle();
myRectangle.Width = 200;
myRectangle.Height = 200;
myRectangle.Name = "myRectangle";
this.RegisterName(myRectangle.Name, myRectangle);
'  
' Create a Rectangle
'
Dim myRectangle As New Rectangle()
myRectangle.Width = 200
myRectangle.Height = 200
myRectangle.Name = "myRectangle"
Me.RegisterName(myRectangle.Name, myRectangle)

Hinweise

Die häufigste Verwendung dieser Eigenschaft besteht darin, einen XAML-Elementnamen als Attribut im Markup anzugeben.

Diese Eigenschaft stellt im Wesentlichen eine Komforteigenschaft auf WPF-Frameworkebene bereit, um die XAML x:Name-Direktive festzulegen.

Namen müssen innerhalb eines NameScopes eindeutig sein. Weitere Informationen finden Sie unter WPF-XAML-NameScopes.

Das Abrufen eines Name Elements im Code ist nicht üblich. Wenn Sie bereits über den entsprechenden Verweis im Code verfügen, können Sie nur Methoden und Eigenschaften für den Elementverweis aufrufen und benötigen im Allgemeinen nicht die Name. Eine Ausnahme ist, wenn die Zeichenfolge eine überladene Bedeutung hat, z. B. wenn es nützlich ist, diesen Namen in der Name Benutzeroberfläche anzuzeigen. Das Festlegen eines Name CodeBehind-Codes, wenn das Original Name aus Markup festgelegt wurde, wird ebenfalls nicht empfohlen, und das Ändern der Eigenschaft nach dem Laden des XAML-Codes ändert nicht den ursprünglichen Objektverweis. Die Objektverweise werden nur erstellt, wenn die zugrunde liegenden NameScopes während der Analyse explizit erstellt werden. Sie müssen explizit aufrufen RegisterName , um eine effektive Änderung an der Name Eigenschaft eines bereits geladenen Elements vorzunehmen.

Ein wichtiger Fall, bei dem die Einstellung Name aus Code wichtig ist, ist das Registrieren von Namen für Elemente, für die Storyboards ausgeführt werden, damit sie zur Laufzeit referenziert werden können. Bevor Sie einen Namen registrieren können, müssen Sie möglicherweise auch eine NameScope Instanz instanziieren und zuweisen. Weitere Informationen finden Sie im Abschnitt "Beispiel" oder "Storyboards Overview".

Das Festlegen Name von Code hat eingeschränkte Anwendungen, aber das Abrufen eines Elements nach Name diesem Element ist häufiger. Ein bestimmtes Szenario ist, wenn Ihre Anwendung ein Navigationsmodell unterstützt, bei dem Seiten in die Anwendung neu geladen werden, und der Laufzeitcode ist nicht unbedingt CodeBehind für diese Seite definiert. Die Hilfsmethode FindName, die von jedem FrameworkElementverfügbar ist, kann jedes Element anhand Name der logischen Struktur für dieses Element finden, wobei die Struktur nach Bedarf rekursiv durchsucht wird. Sie können auch die statische Methode verwenden, bei LogicalTreeHelperder FindLogicalNode auch eine Name Zeichenfolge als Argument verwendet wird.

In der Regel verwendete Stammelemente (WindowPagez. B.) implementieren die SchnittstelleINameScope. Es wird erwartet, dass Implementierungen dieser Schnittstelle erzwingen, dass Namen innerhalb ihres Gültigkeitsbereichs eindeutig sind. Die Stammelemente, die diese Schnittstelle definieren, definieren auch die NameScope-Verhaltensgrenzen für alle zugehörigen APIs.

Die Name Eigenschaft dient auch als Bezeichner für andere Prozesse. Beispielsweise wird das WPF-Automatisierungsmodell als AutomationId für Clients und Anbieter verwendet Name .

Die für Name Zeichenfolgenwerte verwendeten Einschränkungen gelten für die zugrunde liegende x:Name-Direktive , die durch die XAML-Spezifikation definiert wurde. Vor allem muss ein Name Muss mit einem Buchstaben oder dem Unterstrich (_) beginnen und darf nur Buchstaben, Ziffern oder Unterstriche enthalten. Weitere Informationen finden Sie unter WPF-XAML-NameScopes.

Name ist eine der wenigen Abhängigkeitseigenschaften, die nicht animiert werden können (IsAnimationProhibited ist true in Metadaten), da der Name selbst für die Ausrichtung einer Animation von entscheidender Bedeutung ist. Die Datenbindung Name ist technisch möglich, ist aber ein äußerst ungewöhnliches Szenario, da eine datengebundene Name Eigenschaft nicht den hauptzweckorientierten Zweck der Eigenschaft erfüllen kann: um einen Bezeichnerverbindungspunkt für CodeBehind bereitzustellen.

Informationen zur Abhängigkeitseigenschaft

Element Wert
Bezeichnerfeld NameProperty
Auf Metadateneigenschaften festgelegt true IsAnimationProhibited

Gilt für: