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

В настоящее время у меня есть Combobox, как показано ниже:

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

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

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

Ответ 1

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

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

Ответ 2

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

См. также Объекты: обработка специального контента на XML.com:

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

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

Ответ 3

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

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

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