Как я могу ввести строковый литерал, содержащий символ точки в XAML (Silverlight 4)? - PullRequest
0 голосов
/ 03 сентября 2010

Может быть, это что-то очевидное, но вот что у меня есть.Мне нужно написать строку в XAML.Это нормально, но если в строке есть символ точки, синтаксический анализатор XAML завершается ошибкой.Я пробовал все виды экранирования, но ничего не помогает.

            <datafilter:ItemPropertyDefinition Name="Players.Count"
                                               PropertyType="{Binding Int32, ElementName=Types}" 
                                               DisplayName="Squad Size">
            </datafilter:ItemPropertyDefinition>

Независимо от того, что я делаю, у меня не может быть строкового литерала, который содержит точку.Парсер XAML всегда сообщает:

«Players.Count» не является допустимым значением для Name ».

Есть идеи?Заранее спасибо.

Россен

Ответы [ 3 ]

1 голос
/ 03 сентября 2010

Это не литерал, это свойство Name.Вы не можете иметь "."в имени, так же, как вы не можете назвать переменную с помощью "."в коде.

В вашем примере доступ к свойству DisplayName будет иметь видДумаю, PlayerCount.

0 голосов
/ 03 сентября 2010

XAML обеспечивает особую обработку имен элементов с использованием атрибутов Name и x:Name.From FrameworkElement.Name Свойство :

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

Как правило, при определении FrameworkElement.

следует избегать определения свойства Name.
0 голосов
/ 03 сентября 2010

Я узнал, что происходит.Это удивительноПросто неудачное совпадение имен.

ItemPropertyDefinition - мой СОБСТВЕННЫЙ класс.Это DependencyObject.У него есть строка DependencyProperty с именем Name.Оно называется Name, потому что оно содержит имя вещи.

Возможно, «умный» синтаксический анализатор XAML не допускает точек в свойстве Name, полностью игнорируя тот факт, что это класс MY, а это MYсвойство.

Мне нужно изменить это, чтобы оно называлось PropertyName, иначе я испорчу свойство DependencyObject.Name.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...