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 que lleva a cabo un procesador XAMLXAML.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

Valor de propiedad

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 propiedad Name en el código y, a continuación, se registra el nombre en el NameScope recién creado 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 que el Nametenga como destino y no se puede establecer como destino por referencia de objeto.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 de XAMLXAML como atributo en el marcado.The most common usage of this property is to specify a XAMLXAML 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 XAMLXAML x:Name.This property essentially provides a WPF framework-level convenience property to set the XAMLXAML 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á el 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 cadena de Name tiene algún significado sobrecargado; por ejemplo, si resulta útil mostrar ese nombre en IUUI.An exception to this is if the Name string has some overloaded meaning, for instance if it is useful to display that name in IUUI. No se recomienda establecer un Name del código subyacente si no se ha establecido el Name original desde el marcado, y el cambio de la propiedad después de cargar el XAMLXAML 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 XAMLXAML 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 a RegisterName para hacer un cambio efectivo en la propiedad Name 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 el establecimiento de Name desde el 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 NameScope.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 de Name desde el código tiene aplicaciones limitadas, pero la obtención de un elemento por Name es más común.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 método estático FindLogicalNode de LogicalTreeHelper, que también toma una cadena de Name 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 propiedad Name también actúa como identificador para otros procesos.The Name property also serves as an identifier for other processes. Por ejemplo, el modelo de automatización de WPFWPF usará Name como AutomationId para clientes y proveedores.For instance, the WPFWPF automation model will use Name as the AutomationId for clients and providers.

Los valores de cadena utilizados para Name tienen algunas restricciones, según lo impuesto la Directiva x:Name subyacente definida por la especificación XAMLXAML.The string values used for Name have some restrictions, as imposed by the underlying x:Name Directive defined by the XAMLXAML specification. En concreto, un Name debe empezar con una letra o el carácter de subrayado () y debe contener solo 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 pocas propiedades de dependencia que no se pueden animar (IsAnimationProhibited se true en los metadatos), ya que 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 de un Name es técnicamente posible, pero es un escenario muy poco frecuente porque un Name enlazado a datos no puede atender el propósito principal 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