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

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

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

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

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

77
задан wonea 24 April 2019 в 13:12
поделиться

3 ответа

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

//XAML
<ComboBox>
<ComboBoxItem> Awake &amp; Alive</ComboBoxItem>
</ComboBox>
162
ответ дан 24 November 2019 в 10:50
поделиться

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

См. также Entities: Handling Special Content на XML.com:

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

... Итак, один из способов обойти вашу непосредственную проблему - заменить амперсанд в вашем контенте на ссылка на соответствующий объект: <компания> Harris & amp; Джордж .

18
ответ дан 24 November 2019 в 10:50
поделиться

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

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

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

7
ответ дан 24 November 2019 в 10:50
поделиться