オルタナティブ・ブログ > IT's my business >

IT業界のコメントマニアが始めるブログ。いつまで続くのか?

(XAML#01)「テキスト中の改行」

»

Xaml2_001

XAML(Extensible Application Markup Language)は、XML(Extensible Markup Language)に基づいているため、データを定義するテキストに含まれるスペースや改行文字は、ひとつの空白文字として扱われます。次のように2行に分けても「一行目 二行目」と一行に続けて表示されます。

<TextBlock>一行目
二行目</TextBlock>

<TextBlock>で扱うテキストデータには<LineBreak />という要素を埋め込むことで改行を追加できます。たとえば、次のように定義すると「一行目」と「二行目」は2行に分けて表示されます。

<TextBlock>一行目<LineBreak />
二行目</TextBlock>

XML では、xml:space属性を使って空白文字を「そのまま」扱うこともできます。xml:spaceには"default"(既定)と"preserve"(そのまま)を指定することができ、xml:space="preserve"とすればテキスト中のスペースや改行などの空白文字は、あるがままに取り扱われます。たとえば、次のように定義すれば、「一行目」と「二行目」は2行に分けて表示されます。

<TextBlock xml:space="preserve">一行目
二行目</TextBlock>

ただし、このときはタブ文字なども空白文字として無視されずに処理されることに注意してください。XAML を次のようにインデントを使って定義すると、「一行目」の前の改行文字やタブ文字「二行目」の前のタブ文字や後ろの改行文字も、そのままテキストデータとして扱われるため、余計な空白が表示されてしまうことになります。

<TextBlock xml:space="preserve">
    一行目
    二行目
</TextBlock>

Textプロパティに割り当てる文字列を、属性として定義することもあります。XML では文字列中に「&#」と「;」で囲んで文字コードを指定できるため、「&#xA;」(16進表記)または &#10;(10進表記)のように改行コードを埋め込むこともできます。次のようにすれば「一行目」と「二行目」は2行に分けて表示されます。

<TextBlock Text="一行目&#10;二行目" />












Comment(0)