Как включить амперсанд (&) в содержимое ComboBoxItem


84

В настоящее время у меня есть поле со списком, подобное следующему:

//XAML
<ComboBox>
<ComboBoxItem> Awake & Alive</ComboBoxItem>
</ComboBox>

Это вызывает ошибку: ссылки на объекты или последовательности, начинающиеся с амперсанда '&', должны заканчиваться точкой с запятой ';'.

Я предполагаю, что мне не хватает какой-то escape-последовательности, позволяющей использовать &. Как я могу настроить содержимое этого comboboxitem на включение &?

Ответы:


174

Используйте &amp;для кодирования амперсанда.

//XAML
<ComboBox>
<ComboBoxItem> Awake &amp; Alive</ComboBoxItem>
</ComboBox>

20

Короткий ответ - использовать &amp;для кодирования амперсанда.

См. Также Entities: Handling Special Content on XML.com:

На нижних уровнях синтаксический анализатор XML - это просто программа, которая считывает через документ XML по одному символу и тем или иным образом анализирует его, а затем ведет себя соответствующим образом. Он знает, что ему нужно обрабатывать один контент иначе, чем другой контент. Эти особые случаи отличает наличие таких символов, как « &» и « <». Они действуют как флаги для парсера; они разграничивают фактическое содержимое документа, предупреждая синтаксический анализатор о том, что он должен сделать что-то в этот момент, кроме простой передачи смежного содержимого какому-либо нижестоящему приложению.

... Так что один из способов , чтобы обойти вашу непосредственную проблему, чтобы заменить амперсанд в содержании с соответствующей ссылкой на сущность: <company>Harris &amp; George</company>.


В своем ответе я исправил терминологию (кодирование против побега). Спасибо, что обратили на это мое внимание.
Энди Уэст,

В вашей ссылке есть полезные сравнения для>, <, "и '. См. Таблицу, начинающуюся со
слов

Это серьезный ответ :) thnx :)
Apoorva

7

Кроме того, вы можете использовать тег CDATA вокруг содержимого элемента ComboBoxItem; Думаю, это лучше поддерживает читабельность текста.

//XAML
<ComboBox>
<ComboBoxItem><![CDATA[Awake & Alive]]></ComboBoxItem>
</ComboBox>

Для справки: http://www.w3schools.com/xmL/xml_cdata.asp

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.