【问题标题】:How to include an ampersand (&) in the content of a ComboBoxItem如何在 ComboBoxItem 的内容中包含与号 (&)
【发布时间】:2010-12-26 21:31:29
【问题描述】:

我目前有一个像下面这样的组合框:

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

这会引发错误: 以“&”符号开头的实体引用或序列必须以分号“;”结尾。

我假设我缺少某种转义序列以允许我使用 &。如何设置此组合框项的内容以包含 &?

【问题讨论】:

    标签: xaml escaping


    【解决方案1】:

    使用&amp;amp; 对& 符号进行编码。

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

    【讨论】:

      【解决方案2】:

      简短的回答是使用&amp;amp;编码一个&符号。

      另请参阅 XML.com 上的 Entities: Handling Special Content

      在最低级别,XML 解析器只是一个程序,它一次读取 XML 文档中的一个字符,并以一种或另一种方式对其进行分析,然后做出相应的行为。它知道它必须以不同于其他内容的方式处理某些内容。这些特殊情况的区别在于“&amp;”和“&lt;”等字符的存在。它们充当解析器的标志;它们分隔文档的实际内容,提醒解析器此时必须做一些事情,而不是简单地将相邻内容传递给下游应用程序。

      ...因此,解决当前问题的一种方法是将内容中的 & 符号替换为适当的实体引用:&lt;company&gt;Harris &amp;amp; George&lt;/company&gt;

      【讨论】:

      • 我已经更正了答案中的术语(编码与转义)。感谢您提请我注意。
      • 您的链接对 >、
      • 那是一个很好的答案:) thnx :)
      【解决方案3】:

      或者,您可以在 ComboBoxItem 元素的内容周围使用 CDATA 标记;我认为它更好地保持了文本的可读性。

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

      供参考:http://www.w3schools.com/xmL/xml_cdata.asp

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-14
        • 2021-07-01
        • 1970-01-01
        • 2013-04-03
        • 2019-03-04
        • 1970-01-01
        相关资源
        最近更新 更多