FrameworkElement.Name problem

2019-02-22 05:38发布

I am attempting to set the Name property of a Page in the constructor:

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

However, I often get the following error message.

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

Where x seems to be almost anything, drilling down into the exception details doesn't seem to provide any useful information (e.g. the InnerException is null.)

Does anyone know what is happening here?

2条回答
做个烂人
2楼-- · 2019-02-22 06:01

Of course, moments after posting this I realised what's going on.

Because FrameworkElement.Name is used for creating object references, you have to ensure that the string contains only valid chars for an object instance variable name.

Use Title or another plain text property instead, unless you really want to set the x:Name property for referencing.

查看更多
Anthone
3楼-- · 2019-02-22 06:22

The Name property generally follows the rules of C#/VB.NET identifiers (i.e. fields). Based on the documentation:

The string values used for Name have some restrictions, as imposed by the underlying x:Name Directive defined by the XAML specification. Most notably, a Name must start with a letter or the underscore character (_), and must contain only letters, digits, or underscores.

Based on the parameter you are passing (i.e. title), it seems like you may violate that. But you'd have to give some specific examples to be sure.

查看更多
登录 后发表回答