Share via


Atributo x:Name

Actualización: noviembre 2007

Identifica singularmente los elementos de objeto para el acceso al elemento con instancias del código subyacente o general. Una vez aplicado a un modelo de programación de respaldo, x:Name se puede considerar equivalente a la variable que contiene una referencia de objeto, devuelta por un constructor.

Uso de atributos XAML

<object x:Name="XAMLNameValue".../>

Valores XAML

XAMLNameValue

Cadena que cumple a las restricciones de Gramática de XamlName.

Comentarios

Bajo la configuración de compilación estándar correspondiente a un proyecto de aplicación de WPF que utiliza XAML, clases parciales y código subyacente, el x:Name especificado pasa a ser el nombre de un campo que se crea en el código subyacente al procesar el XAML; este campo contiene una referencia al objeto.

De manera predeterminada, el campo creado es interno. Puede cambiar el acceso al campo especificando el atributo x:FieldModifier.

Para una aplicación que utiliza destinos de Microsoft Visual Basic .NET e incluye archivos XAML, se crea una propiedad de referencia independiente durante la compilación que agrega la palabra clave WithEvents a todos los elementos que tienen un atributo x:Name, a fin de admitir la sintaxis de Handles para los delegados de controladores de eventos. Esta propiedad siempre es pública. Para obtener información más detallada, vea Control de eventos en Visual Basic y WPF.

x:Name debe ser único dentro de un ámbito de nombres. En los casos de XAML más comunes, el ámbito de nombres principal se define mediante esos elementos contenidos en una misma página XAML. Los ámbitos de nombres adicionales discretos los define cualquier plantilla que también esté definida en esa página. Para obtener más información sobre consideraciones de ámbitos de nombres, vea Ámbitos de nombres de WPF.

Un procesador XAML utiliza x:Name para registrar un nombre en un ámbito de nombres, incluso en aquellos casos en que la página no está compilada (por ejemplo, XAML dinámico). Esto se debe a que x:Name se necesita potencialmente para el enlace de ElementName. Para obtener información más detallada, vea Información general sobre el enlace de datos.

x:Name no se puede aplicar en algunos ámbitos en la programación en WPF. Por ejemplo, los elementos de un objeto ResourceDictionary no pueden tener nombre, porque ResourceDictionary presenta un comportamiento especial que consiste en definirse a sí mismo ámbito de nombres de XAML pero devolver Not Implemented para la API clave INameScope.

Las reglas para permitir x:Name, así como la singularidad de los ámbitos, se definen en la implementación del marco de trabajo subyacente de Windows Presentation Foundation (WPF), que divide los distintos elementos de marcado en intervalos de NameScope independientes, tales como diccionarios de recursos, el árbol lógico creado por el XAML de nivel de página, las plantillas, etc.

Algunas aplicaciones de nivel de marco de trabajo de WPF podrían ser capaces de evitar cualquier uso del atributo x:Name, porque la propiedad de dependencia Name especificada dentro del espacio de nombres de WPF para algunas de las clases base importantes (como FrameworkElement/FrameworkContentElement) ya satisface este mismo propósito. Existen algunos escenarios de XAML y de marco de trabajo comunes donde es necesario tener acceso mediante código a un elemento que no tiene una propiedad Name, en particular en algunas clases de respaldo de animaciones y guiones gráficos. Por ejemplo, debe especificar x:Name en las escalas de tiempo y transformaciones creadas en XAML, si piensa hacer referencia a ellas desde el código.

Si Name está disponible como una propiedad de la clase, Name y x:Name se pueden utilizar de forma intercambiable como atributos, pero se producirá un error si ambas se especifican en el mismo elemento.

Para los elementos personalizados, la propiedad (puede ser una propiedad CLR o una propiedad de dependencia) que se asigna a x:Name para cualquier objeto determinado se puede establecer o cambiar designando esa propiedad con el RuntimeNamePropertyAttribute en el código de la declaración de propiedad.

Name se puede establecer mediante la sintaxis de atributo de XAML y también mediante código usando el método SetValue; no obstante, tenga en cuenta que, en algunas circunstancias, al establecer la propiedad Name en código no se crea la referencia de campo representativa dentro del ámbito de nombres. En lugar de intentar establecer Name mediante código, utilice los métodos NameScope del código, con respecto al ámbito de nombres correspondiente.

Name también se puede establecer utilizando la sintaxis de elemento de propiedad de XAML con texto interno, pero no es frecuente. x:Name no se pueden establecer mediante la sintaxis de elemento de propiedad de XAML ni mediante código utilizando SetValue; solo se puede establecer utilizando la sintaxis de atributo en los elementos.

Vea también

Conceptos

Árboles en WPF

Referencia

Name

Name