FrameworkElement.Name Propiedad

Definición

Obtiene o establece el nombre de identificación del elemento.Gets or sets the identifying name of the element. El nombre proporciona una referencia para que el código subyacente, como el código del controlador de eventos, pueda hacer referencia a un elemento de marcado una vez construido durante el procesamiento por parte de un procesador XAML.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 XAML 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; }
[<System.Windows.Localizability(System.Windows.LocalizationCategory.NeverLocalize)>]
member this.Name : string with get, set
Public Property Name As String

Valor de propiedad

String

Nombre del elemento.The name of the element. El valor predeterminado es una cadena vacía.The default is an empty string.

Implementaciones

Atributos

Ejemplos

En el ejemplo siguiente se establece la Name propiedad en el código y, a continuación, se registra el nombre en el recién creado NameScope llamando a RegisterName .The following example sets the Name property in code, and then registers the name into the newly created NameScope by calling RegisterName. La técnica que se muestra aquí es un requisito para animar con guiones gráficos, porque los guiones gráficos requieren el destino de Name y no pueden ser objeto de referencia.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)

Comentarios

El uso más común de esta propiedad es especificar un nombre de elemento XAML como un atributo en el marcado.The most common usage of this property is to specify a XAML element name as an attribute in markup.

Esta propiedad proporciona esencialmente una propiedad de conveniencia en el nivel de marco de WPF para establecer la Directiva de XAML x:Name.This property essentially provides a WPF framework-level convenience property to set the XAML x:Name Directive.

Los nombres deben ser únicos dentro de un ámbito de nombres.Names must be unique within a namescope. Para más información, consulte Ámbitos de nombres XAML de WPF.For more information, see WPF XAML Namescopes.

Obtener un Name si está creando elementos en el código no es común.Getting a Name if you are creating elements in code is not common. Si ya tiene la referencia adecuada en el código, puede llamar a métodos y propiedades en la referencia del elemento y, por lo general, no necesitará Name .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. Una excepción a esto es si la Name cadena tiene algún significado sobrecargado; por ejemplo, si resulta útil mostrar ese nombre en la interfaz de usuario.An exception to this is if the Name string has some overloaded meaning, for instance if it is useful to display that name in UI. No Name se recomienda establecer un objeto desde el código subyacente si no se ha establecido el objeto original Name desde el marcado, y el cambio de la propiedad después de cargar el código XAML no cambiará la referencia del objeto original.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 XAML will not change the original object reference. Las referencias de objeto se crean solo cuando los ámbitos de la subyacente se crean explícitamente durante el análisis.The object references are created only when the underlying namescopes are explicitly created during parsing. Debe llamar específicamente RegisterName a para hacer un cambio efectivo en la Name propiedad de un elemento ya cargado.You must specifically call RegisterName to make an effective change to the Name property of an already loaded element.

Un caso notable en el que la configuración Name del código es importante es cuando se registran los nombres de los elementos en los que se ejecutarán los guiones gráficos, de modo que se pueda hacer referencia a ellos en tiempo de ejecución.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. Para poder registrar un nombre, es posible que también tenga que crear una instancia de y asignar una NameScope instancia de.Before you can register a name, might also need to instantiate and assign a NameScope instance. Vea la sección de ejemplo o la información general sobre los guiones gráficos.See the Example section, or Storyboards Overview.

La configuración Name del código tiene aplicaciones limitadas, pero Name es más común obtener un elemento.Setting Name from code has limited applications, but getting an element by Name is more common. Un escenario concreto es si la aplicación admite un modelo de navegación en el que las páginas se recargan en la aplicación y el código en tiempo de ejecución no tiene que definir necesariamente el código subyacente para esa página.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. El método de utilidad FindName , que está disponible en cualquier FrameworkElement , puede encontrar cualquier elemento Name en el árbol lógico de ese elemento, buscando en el árbol de forma recursiva según sea necesario.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. O bien, puede usar el FindLogicalNode método estático de LogicalTreeHelper , que también toma una Name cadena como argumento.Or you can use the FindLogicalNode static method of LogicalTreeHelper, which also takes a Name string as an argument.

Normalmente, los elementos raíz utilizados ( Window , Page por ejemplo) implementan la interfaz INameScope .Typically used root elements (Window, Page for example) implement the interface INameScope. Se espera que las implementaciones de esta interfaz exijan que los nombres no sean ambiguos dentro de su ámbito.Implementations of this interface are expected to enforce that names be unambiguous within their scope. Los elementos raíz que definen esta interfaz también definen los límites de comportamiento del ámbito de nombres para todas las API relacionadas.The root elements that define this interface also define the namescope behavior boundaries for all the related APIs.

La Name propiedad también sirve como identificador para otros procesos.The Name property also serves as an identifier for other processes. Por ejemplo, el modelo de automatización de WPF usará Name como AutomationId para clientes y proveedores.For instance, the WPF automation model will use Name as the AutomationId for clients and providers.

Los valores de cadena que se usan para Name tienen algunas restricciones, según lo impuesto la Directiva x:Name subyacente definida por la especificación XAML.The string values used for Name have some restrictions, as imposed by the underlying x:Name Directive defined by the XAML specification. En concreto, un Name debe empezar con una letra o el carácter de subrayado () y solo debe contener letras, dígitos o caracteres de subrayado.Most notably, a Name must start with a letter or the underscore character (), and must contain only letters, digits, or underscores. Para más información, consulte Ámbitos de nombres XAML de WPF.For more information, see WPF XAML Namescopes.

Name es una de las propiedades de dependencia muy pocas que no se pueden animar ( IsAnimationProhibited está true en metadatos), porque el propio nombre es fundamental para el destino de una animación.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. El enlace de datos a Name es técnicamente posible, pero es un escenario muy poco frecuente porque un enlace de datos Name no puede atender el propósito principal previsto de la propiedad: para proporcionar un punto de conexión de identificador para el código subyacente.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.

Información sobre propiedades de dependenciaDependency Property Information

Campo de identificadorIdentifier field NameProperty
Propiedades de metadatos establecidas en trueMetadata properties set to true IsAnimationProhibited

Se aplica a