FrameworkElement.Name Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene o establece el nombre de identificación del elemento. 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 después de que se construya durante el procesamiento por parte de un procesador XAML.
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
Nombre del elemento. El valor predeterminado es una cadena vacía.
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. La técnica que se muestra aquí es un requisito para animar con guiones gráficos, ya que los guiones gráficos requieren la selección de destino por Namey no se pueden establecer como destino por referencia de objeto.
//
// 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 atributo en el marcado.
Esta propiedad proporciona esencialmente una propiedad de conveniencia de nivel de marco de WPF para establecer la directiva XAML x:Name.
Los nombres deben ser únicos dentro de un ámbito de nombres. Para más información, consulte Ámbitos de nombres XAML de WPF.
Obtener un Name si va a crear elementos en el código no es común. Si ya tiene la referencia adecuada en el código, solo puede llamar a métodos y propiedades en la referencia de elemento y no necesitará generalmente .Name Una excepción a esto es si la cadena tiene algún significado sobrecargado, por ejemplo, si es útil mostrar ese nombre en la Name interfaz de usuario. No se recomienda establecer un Name valor a partir del código subyacente si el original Name se estableció a partir del marcado, y cambiar la propiedad después de cargar el XAML no cambiará la referencia de objeto original. Las referencias de objeto solo se crean cuando los ámbitos de nombres subyacentes se crean explícitamente durante el análisis. Debe llamar RegisterName específicamente a para realizar un cambio efectivo en la Name propiedad de un elemento ya cargado.
Un caso notable en el que es importante establecer Name desde código es al registrar nombres para los elementos en los que se ejecutarán guiones gráficos, de modo que se pueda hacer referencia a ellos en tiempo de ejecución. Para poder registrar un nombre, es posible que también tenga que crear instancias y asignar una NameScope instancia. Consulte la sección Ejemplo o Información general sobre guiones gráficos.
Establecer Name desde código tiene aplicaciones limitadas, pero obtener un elemento por Name es más común. Un escenario determinado es si la aplicación admite un modelo de navegación en el que las páginas se vuelven a cargar en la aplicación y el código en tiempo de ejecución no es necesariamente el código subyacente definido para esa página. El método FindNamede utilidad , que está disponible desde cualquier FrameworkElement, puede encontrar cualquier elemento en Name el árbol lógico de ese elemento, buscando el árbol de forma recursiva según sea necesario. O bien, puede usar el FindLogicalNode método estático de LogicalTreeHelper, que también toma una Name cadena como argumento.
Normalmente se usan elementos raíz (Windowpor Page ejemplo) para implementar la interfaz INameScope. Se espera que las implementaciones de esta interfaz exijan que los nombres no sean ambiguos dentro de su ámbito. 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.
La Name propiedad también actúa como identificador para otros procesos. Por ejemplo, el modelo de automatización de WPF se usará Name como AutomationId para clientes y proveedores.
Los valores de cadena usados para Name tienen algunas restricciones, tal y como se impone en la directiva x:Name subyacente definida por la especificación XAML. En particular, debe Name comenzar con una letra o el carácter de subrayado (_) y solo debe contener letras, dígitos o caracteres de subrayado. Para más información, consulte Ámbitos de nombres XAML de WPF.
Name es una de las pocas propiedades de dependencia que no se pueden animar (IsAnimationProhibited está true
en metadatos), porque el propio nombre es fundamental para tener como destino una animación. El enlace Name de datos es técnicamente posible, pero es un escenario extremadamente raro porque un enlazado a Name datos no puede servir al propósito principal de la propiedad: proporcionar un punto de conexión de identificador para el código subyacente.
Información sobre propiedades de dependencia
Campo identificador | NameProperty |
Propiedades de metadatos establecidas en true |
IsAnimationProhibited |