Как включить амперсанд (&) в содержимое ComboBoxItem - PullRequest
71 голосов
/ 15 декабря 2009

У меня в настоящее время есть Combobox, подобный следующему:

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

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

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

Ответы [ 3 ]

155 голосов
/ 15 декабря 2009

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

//XAML
<ComboBox>
<ComboBoxItem> Awake &amp; Alive</ComboBoxItem>
</ComboBox>
17 голосов
/ 15 декабря 2009

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

См. Также Сущности: обработка специального содержимого на XML.com:

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

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

7 голосов
/ 15 декабря 2009

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

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

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

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