FrameworkElement.Name FrameworkElement.Name FrameworkElement.Name FrameworkElement.Name Property

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

Ejemplos

El ejemplo siguiente se establece la Name propiedad en el código y, a continuación, registra el nombre en el recién creado NameScope mediante una llamada 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 mostrada aquí es un requisito para animar con guiones gráficos, porque los guiones gráficos requieren que el Namey la referencia de objeto no puede tener como destino.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 XAMLXAML nombre del elemento como un atributo de marcado.The most common usage of this property is to specify a XAMLXAML element name as an attribute in markup.

Básicamente, esta propiedad proporciona una propiedad de conveniencia de nivel de marco WPF para establecer el XAMLXAML x: Name Directive.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 obtener más información, consulte ámbitos de nombres de XAML de WPF.For more information, see WPF XAML Namescopes.

Obtener un Name si va a crear elementos de 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, simplemente puede llamar a métodos y propiedades en el elemento de referencia y no por lo general necesidad de la 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 es útil mostrar el 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. Establecer un Name desde el código subyacente si original Name estableció de marcado también se recomienda no y cambiar la propiedad después de cargar el XAMLXAML no cambiará la referencia al 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 a objetos se crean solo cuando los ámbitos de nombres subyacentes 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 realizar un cambio efectivo a 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 notables caso de que el valor Name desde el código es importante es al registrar los nombres de la ejecución de los elementos que guiones gráficos a voluntad, por lo que puede hacer referencia 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, también tendrá que crear una instancia y asignar un NameScope instancia.Before you can register a name, might also need to instantiate and assign a NameScope instance. Vea la sección de ejemplo o Storyboards Overview.See the Example section, or Storyboards Overview.

Establecer Name desde el código ha limitado a las aplicaciones, pero la obtención de un elemento 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 donde se recargan las páginas en la aplicación y el código de tiempo de ejecución no es necesariamente definido para esa página de código subyacente.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 desde cualquier FrameworkElement, puede buscar cualquier elemento por Name en el árbol lógico de ese elemento, buscar 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 un Name cadena como argumento.Or you can use the FindLogicalNode static method of LogicalTreeHelper, which also takes a Name string as an argument.

Normalmente utiliza elementos raíz (Window, Page por ejemplo) implementan la interfaz INameScope.Typically used root elements (Window, Page for example) implement the interface INameScope. Se esperan las implementaciones de esta interfaz para exigir que los nombres de ser inequívoco 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 de ámbito de nombres para todos los que se relaciona APIAPIs.The root elements that define this interface also define the namescope behavior boundaries for all the related APIAPIs.

El Name propiedad también actúa como un identificador para otros procesos.The Name property also serves as an identifier for other processes. Por ejemplo, el WPFWPF usará el modelo de automatización 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 usados para Name tienen algunas restricciones, como las impuestas por subyacente x: Name Directive definido por el XAMLXAML especificación.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 comenzar 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 obtener más información, consulte ámbitos de nombres de XAML de WPF.For more information, see WPF XAML Namescopes.

Name es una de las pocas propiedades de dependencia que no pueden animarse (IsAnimationProhibited es true en los metadatos), ya que el propio nombre es vital para dirigirse a 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. Enlace de datos un Name es técnicamente posible, pero es un escenario muy poco común porque un enlace de datos Name no puede servir 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
Establecen las propiedades de metadatos en trueMetadata properties set to true IsAnimationProhibited

Se aplica a