FrameworkElement.Name problem
Asked Answered
H

2

11

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?

Haematoblast answered 24/3, 2011 at 0:6 Comment(0)
W
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.

Wadi answered 24/3, 2011 at 0:19 Comment(1)
Yep, I realised as soon as I'd posted :)Haematoblast
H
1

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.

Haematoblast answered 24/3, 2011 at 0:25 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.