FrameworkElement.Name проблема - PullRequest
       11

FrameworkElement.Name проблема

7 голосов
/ 24 марта 2011

Я пытаюсь установить свойство Name страницы в конструкторе:

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

Однако я часто получаю следующее сообщение об ошибке.

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

В тех случаях, когда x кажется почти чем-либо, детализация исключений, по-видимому, не дает никакой полезной информации (например, InnerException имеет значение null.)

Кто-нибудь знает, что здесь происходит?

Ответы [ 2 ]

16 голосов
/ 24 марта 2011

Свойство Name обычно соответствует правилам идентификаторов C # / VB.NET (т. Е. Полей).На основе документации :

Строковые значения, используемые для Name, имеют некоторые ограничения, налагаемые базовой директивой x: Name, определенной в спецификации XAML.В частности, имя должно начинаться с буквы или символа подчеркивания (_) и должно содержать только буквы, цифры или символы подчеркивания.

В зависимости от передаваемого параметра (т. Е. Заголовка),кажется, что вы можете нарушить это.Но вам нужно привести несколько конкретных примеров, чтобы быть уверенным.

1 голос
/ 24 марта 2011

Конечно, через несколько минут после публикации я понял, что происходит.

Поскольку FrameworkElement.Name используется для создания ссылок на объекты, вы должны убедиться, что строка содержит только допустимые символы для имени переменной экземпляра объекта..

Вместо этого используйте Заголовок или другое свойство простого текста, если только вы действительно не хотите установить свойство x:Name для ссылки.

...