【发布时间】:2010-12-26 21:31:29
【问题描述】:
我目前有一个像下面这样的组合框:
//XAML
<ComboBox>
<ComboBoxItem> Awake & Alive</ComboBoxItem>
</ComboBox>
这会引发错误: 以“&”符号开头的实体引用或序列必须以分号“;”结尾。
我假设我缺少某种转义序列以允许我使用 &。如何设置此组合框项的内容以包含 &?
【问题讨论】:
我目前有一个像下面这样的组合框:
//XAML
<ComboBox>
<ComboBoxItem> Awake & Alive</ComboBoxItem>
</ComboBox>
这会引发错误: 以“&”符号开头的实体引用或序列必须以分号“;”结尾。
我假设我缺少某种转义序列以允许我使用 &。如何设置此组合框项的内容以包含 &?
【问题讨论】:
使用&amp; 对& 符号进行编码。
//XAML
<ComboBox>
<ComboBoxItem> Awake & Alive</ComboBoxItem>
</ComboBox>
【讨论】:
简短的回答是使用&amp; 来编码一个&符号。
另请参阅 XML.com 上的 Entities: Handling Special Content:
在最低级别,XML 解析器只是一个程序,它一次读取 XML 文档中的一个字符,并以一种或另一种方式对其进行分析,然后做出相应的行为。它知道它必须以不同于其他内容的方式处理某些内容。这些特殊情况的区别在于“
&”和“<”等字符的存在。它们充当解析器的标志;它们分隔文档的实际内容,提醒解析器此时必须做一些事情,而不是简单地将相邻内容传递给下游应用程序。...因此,解决当前问题的一种方法是将内容中的 & 符号替换为适当的实体引用:
<company>Harris &amp; George</company>。
【讨论】:
或者,您可以在 ComboBoxItem 元素的内容周围使用 CDATA 标记;我认为它更好地保持了文本的可读性。
//XAML
<ComboBox>
<ComboBoxItem><![CDATA[Awake & Alive]]></ComboBoxItem>
</ComboBox>
【讨论】: