web-dev-qa-db-ja.com

ComboBoxItemのコンテンツにアンパサンド(&)を含める方法

私は現在、次のようなコンボボックスを持っています:

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

これによりエラーが発生します。アンパサンド「&」で始まるエンティティ参照またはシーケンスはセミコロン「;」で終了する必要があります。

&を使用できるようにするための何らかのエスケープシーケンスが欠落していると仮定します。このcomboboxitemのコンテンツを設定して&を含めるにはどうすればよいですか?

75
CrimsonX

使用する &amp;アンパサンドをエンコードします。

//XAML
<ComboBox>
<ComboBoxItem> Awake &amp; Alive</ComboBoxItem>
</ComboBox>
159
Andy West

簡単な答えは、アンパサンドをencode&amp;を使用することです。

XML-comの エンティティ:特別なコンテンツの処理 も参照してください。

最下位レベルのXMLパーサーは、XMLドキュメントから文字を一度に読み取り、それを何らかの方法で分析し、それに応じて動作する単なるプログラムです。一部のコンテンツを他のコンテンツとは異なる方法で処理する必要があることを知っています。これらの特殊なケースを区別するのは、「&」や「<」などの文字の存在です。パーサーへのフラグとして機能します。ドキュメントの実際のコンテンツを区切って、単に隣接するコンテンツを何らかのダウンストリームアプリケーションに渡す以外に、この時点で何かを行う必要があるという事実をパーサーに警告します。

...したがって、当面の問題を回避する1つの方法は、コンテンツのアンパサンドを適切なエンティティ参照<company>Harris &amp; George</company>に置き換えることです。

18
Sinan Ünür

または、ComboBoxItem要素のコンテンツの周りでCDATAタグを使用できます。テキストの読みやすさをより良く維持できると思います。

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

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

7
chaosTechnician