FrameworkElement.Name Eigenschaft

Definition

Dient zum Abrufen oder Festlegen des Elementnamens.Gets or sets the identifying name of the element. Der Name stellt einen Verweis bereit, damit CodeBehind, wie etwa Ereignishandlercode, auf ein Markupelement verweisen kann, nachdem es während der Verarbeitung durch einen XAMLXAML-Prozessor konstruiert wurde.The name provides a reference so that code-behind, such as event handler code, can refer to a markup element after it is constructed during processing by a XAMLXAML processor.

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; }
member this.Name : string with get, set
Public Property Name As String

Eigenschaftswert

Der Name des Elements.The name of the element. Der Standardwert ist eine leere Zeichenfolge.The default is an empty string.

Implementiert

Attribute

Beispiele

Im folgenden Beispiel wird die Name-Eigenschaft im Code festgelegt. Anschließend wird der Name in der neu erstellten NameScope registriert, indem RegisterNameaufgerufen wird.The following example sets the Name property in code, and then registers the name into the newly created NameScope by calling RegisterName. Das hier dargestellte Verfahren ist eine Voraussetzung für die Animation mit Storyboards, da für Storyboards das Ziel des Nameerforderlich ist und der Objekt Verweis nicht als Ziel verwendet werden kann.The technique illustrated here is a requirement for animating with storyboards, because storyboards require targeting by the Name, and cannot be targeted by object reference.

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

Diese Eigenschaft wird am häufigsten verwendet, um einen XAMLXAML Elementnamen als Attribut in Markup anzugeben.The most common usage of this property is to specify a XAMLXAML element name as an attribute in markup.

Diese Eigenschaft bietet im Wesentlichen eine Eigenschaft der WPF-Frameworkebene zum Festlegen der XAMLXAML x:Name-Direktive.This property essentially provides a WPF framework-level convenience property to set the XAMLXAML x:Name Directive.

Namen müssen innerhalb eines Namescope eindeutig sein.Names must be unique within a namescope. Weitere Informationen hierzu finden Sie unter WPF-XAML-Namescopes.For more information, see WPF XAML Namescopes.

Das erhalten einer Name, wenn Sie Elemente im Code erstellen, ist nicht üblich.Getting a Name if you are creating elements in code is not common. Wenn Sie bereits über den entsprechenden Verweis im Code verfügen, können Sie einfach Methoden und Eigenschaften für den Element Verweis aufzurufen und benötigen die Namenicht in der Regel.If you have the appropriate reference in code already, you can just call methods and properties on the element reference and will not generally need the Name. Eine Ausnahme hiervon ist, wenn die Name Zeichenfolge eine überladene Bedeutung hat, beispielsweise, wenn es sinnvoll ist, den Namen in UIUIanzuzeigen.An exception to this is if the Name string has some overloaded meaning, for instance if it is useful to display that name in UIUI. Das Festlegen einer Name aus Code Behind, wenn die ursprüngliche Name aus Markup festgelegt wurde, wird ebenfalls nicht empfohlen. Wenn Sie die Eigenschaft nach dem Laden der XAMLXAML ändern, wird der ursprüngliche Objekt Verweis nicht geändert.Setting a Name from code-behind if the original Name was set from markup is also not recommended, and changing the property after loading the XAMLXAML will not change the original object reference. Die Objekt Verweise werden nur erstellt, wenn die zugrunde liegenden Namescopes während der Verarbeitung explizit erstellt werden.The object references are created only when the underlying namescopes are explicitly created during parsing. Sie müssen RegisterName ausdrücklich aufzurufen, um eine effektive Änderung an der Name-Eigenschaft eines bereits geladenen Elements vorzunehmen.You must specifically call RegisterName to make an effective change to the Name property of an already loaded element.

Ein wichtiger Fall, bei dem das Festlegen von Name aus Code wichtig ist, ist das Registrieren von Namen für Elemente, für die Storyboards ausgeführt werden, sodass zur Laufzeit auf Sie verwiesen werden kann.One notable case where setting Name from code is important is when registering names for elements that storyboards will run against, so that they can be referenced at run time. Bevor Sie einen Namen registrieren können, müssen Sie möglicherweise auch eine NameScope Instanz instanziieren und zuweisen.Before you can register a name, might also need to instantiate and assign a NameScope instance. Weitere Informationen finden Sie im Beispiel Abschnitt oder in der Übersicht über Storyboards.See the Example section, or Storyboards Overview.

Das Festlegen von Name aus dem Code weist eingeschränkte Anwendungen auf, aber das erhalten eines Elements durch Name ist eher üblich.Setting Name from code has limited applications, but getting an element by Name is more common. Ein bestimmtes Szenario ist, wenn Ihre Anwendung ein Navigations Modell unterstützt, in dem Seiten in die Anwendung geladen werden, und der Lauf Zeit Code nicht notwendigerweise Code Behind für diese Seite definiert ist.One particular scenario is if your application supports a navigation model where pages reload into the application, and the run time code is not necessarily code-behind defined for that page. Die FindNamedes-Hilfsprogramms, die von allen FrameworkElementverfügbar ist, kann jedes beliebige-Element in der logischen Struktur für dieses Element finden und die Struktur nach Bedarf rekursiv Name durchsuchen.The utility method FindName, which is available from any FrameworkElement, can find any element by Name in the logical tree for that element, searching the tree recursively as necessary. Oder Sie können die FindLogicalNode statische Methode von LogicalTreeHelperverwenden, die auch eine Name Zeichenfolge als Argument annimmt.Or you can use the FindLogicalNode static method of LogicalTreeHelper, which also takes a Name string as an argument.

Normalerweise verwendete Stamm Elemente (z. b.WindowPage) implementieren die-Schnittstelle INameScope.Typically used root elements (Window, Page for example) implement the interface INameScope. Bei Implementierungen dieser Schnittstelle wird erwartet, dass die Namen innerhalb ihres Bereichs eindeutig sind.Implementations of this interface are expected to enforce that names be unambiguous within their scope. Die Stamm Elemente, die diese Schnittstelle definieren, definieren auch die Namescope-Verhaltens Grenzen für alle zugehörigen APIs.The root elements that define this interface also define the namescope behavior boundaries for all the related APIs.

Die Name-Eigenschaft dient auch als Bezeichner für andere Prozesse.The Name property also serves as an identifier for other processes. Beispielsweise verwendet das WPFWPF Automation-Modell Name als AutomationId für Clients und Anbieter.For instance, the WPFWPF automation model will use Name as the AutomationId for clients and providers.

Die für Name verwendeten Zeichen folgen Werte weisen einige Einschränkungen auf, die von der zugrunde liegenden x:Name-Direktive auferlegt werden, die durch die XAMLXAML Spezifikation definiert wird.The string values used for Name have some restrictions, as imposed by the underlying x:Name Directive defined by the XAMLXAML specification. Vor allem muss ein Name mit einem Buchstaben oder einem Unterstrich () beginnen und darf nur Buchstaben, Ziffern oder Unterstriche enthalten.Most notably, a Name must start with a letter or the underscore character (), and must contain only letters, digits, or underscores. Weitere Informationen hierzu finden Sie unter WPF-XAML-Namescopes.For more information, see WPF XAML Namescopes.

Name ist eine der sehr wenigen Abhängigkeits Eigenschaften, die nicht animiert werden können (IsAnimationProhibited ist in den Metadaten true), da der Name selbst für eine Animation entscheidend ist.Name is one of the very few dependency properties that cannot be animated (IsAnimationProhibited is true in metadata), because the name itself is vital for targeting an animation. Die Datenbindung a Name ist technisch möglich, ist aber ein äußerst ungewöhnliches Szenario, da ein Daten gebundenes Name nicht den Hauptzweck der Eigenschaft erfüllen kann:, um einen bezeichnerverbindungspunkt für Code Behind bereitzustellen.Data binding a Name is technically possible, but is an extremely uncommon scenario because a data-bound Name cannot serve the main intended purpose of the property: to provide an identifier connection point for code-behind.

Informationen zur AbhängigkeitseigenschaftDependency Property Information

BezeichnerfeldIdentifier field NameProperty
Metadateneigenschaften auf true festgelegtMetadata properties set to true IsAnimationProhibited

Gilt für: