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

84

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

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

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

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

CrimsonX
источник

Ответы:

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

хаосТехник
источник