第3回 画面は「XAML」で作る(前編)連載:Windowsストア・アプリ開発入門(2/5 ページ)

» 2013年10月03日 15時14分 公開
[山本康彦(http://www.bluewatersoft.jp/),BluewaterSoft]

XAML要素のコンテンツ

 開始タグと終了タグの間には、何かほかのものを記述できる。それをXML用語では「内容」(原語をカタカナ書きすれば「コンテント」)というが、マイクロソフト用語では「コンテンツ」と呼ぶ。

 コンテンツには、文字列かXAML要素を記述できる。実際に何が記述できて、それがどういう意味になるかは、元のXAML要素によって異なる。例えば、<TextBlock>要素には、コンテンツとして文字列を記述できる(次のコード)。

<TextBlock>Hello, world! </TextBlock>

XAMLのコンテンツに文字列を指定した例(XAML)
これはTextBlockの開始タグにText属性を指定したのと同じである。

 コンテンツとしてコントロールを表すXAML要素を記述すると、コントロールを入れ子にしたことになる。例えば次のコードでは、Gridコントロールの中にTextBlockコントロールを配置している。

<Grid>
  <TextBlock Text="Hello, world!" />
</Grid>

XAML要素のコンテンツにコントロールを指定した例(XAML)

 上のXAMLコードは次のC#コードとほぼ等価である(上のXAMLコードでは、「grid」という名前の変数は生成されない)。

var grid = new Grid();
grid.Children.Add(new TextBlock { Text = "Hello, xaml", });

Gridコントロールを生成し、その中にTextBlockコントロールを配置する(C#)

 なお、コンテンツとして複数のコントロールを配置できるものと、1つしか置けないものとがあるので、注意してほしい。上のGridコントロールには、複数のコントロールを入れられる。しかし、例えばPageコントロールには、1つしかコントロールを含めることができない。

属性の別の記法

 コンテンツとしては、「プロパティ要素」も記述できる。これは属性の特別な表記の方法だ。例えば、TextBlockコントロールのTextプロパティは、次のようなプロパティ要素としても記述できる。

<TextBlock>
  <TextBlock.Text>Hello, world!</TextBlock.Text>
</TextBlock>

プロパティ要素構文を使って属性を指定した例(XAML)
これは<TextBlock>要素のText属性に「Hello, world!」と指定したのと同じである。

 このプロパティ要素構文を使うことで、単純な文字列では表現できないような複雑なオブジェクトも属性値として与えられる。例えば、GridコントロールのRowDefinitionsプロパティに、2つのRowDefinitionオブジェクトを持つコレクションをセットするXAMLコードは次のようになる。

<Grid>
  <Grid.RowDefinitions>
    <RowDefinition Height="140"/>
    <RowDefinition Height="*"/>
  </Grid.RowDefinitions>
</Grid>

プロパティ要素構文を使って複数のオブジェクトのコレクションを属性値とした例(XAML)
これでGridコントロールの中を上下2行に分割できる。上の行は高さ140px、下の行の高さは残り全部である。

 なお、ほかのコンテンツとプロパティ要素を混在させる場合には、プロパティ要素をコンテンツの最初か最後に置かねばならないので注意してほしい(一般には、プロパティ要素を最初に書いて、その後ろに他のコンテンツとなる要素を書く)。

コメント

 XAMLでのコメントは、「<!--」で始まり、「-->」で終わる。コメントの中では、2文字以上続く「-」文字は記述できない。

 コメントの中にコメントは記述できない。また、タグの中にもコメントは記述できない。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。