2011-03-24 18 views
5

que estoy tratando de establecer la propiedad nombre de una página en el constructor:FrameworkElement.Name problema

public partial class PageListView : Page 
{ 
    public PageListView(string title) 
    { 
     InitializeComponent(); 
     Name = title; 
    } 
} 

Sin embargo, a menudo obtener el siguiente mensaje de error.

'x' is not a valid value for property 'Name'. 

Dónde x parece ser casi cualquier cosa, profundizando en los detalles de la excepción no parece proporcionar ninguna información útil (por ejemplo, la InnerException es nulo.)

¿Alguien sabe lo que está pasando aquí?

Respuesta

12

La propiedad Name generalmente sigue las reglas de los identificadores C#/VB.NET (es decir, los campos). Basado en la documentation:

Los valores de cadena utilizados para Nombre tienen algunas restricciones, como impuesta por la x subyacente: Directiva nombre definido por la especificación XAML. Lo más notable es que un Nombre debe comenzar con una letra o el carácter de subrayado (_), y debe contener solo letras, dígitos o guiones bajos.

Según el parámetro que está pasando (es decir, el título), parece que puede violar eso. Pero tendrías que dar algunos ejemplos específicos para estar seguro.

+1

Sí, me di cuenta tan pronto como publiqué :) – ocodo

1

Por supuesto, momentos después de publicar esto me di cuenta de lo que está pasando.

Dado que FrameworkElement.Name se utiliza para crear referencias de objetos, debe asegurarse de que la cadena solo contenga caracteres válidos para un nombre de variable de instancia de objeto.

Use Título u otra propiedad de texto sin formato, a menos que realmente desee establecer la propiedad x:Name para hacer referencia.