第3回 画面は「XAML」で作る(前編):連載:Windowsストア・アプリ開発入門(2/5 ページ)
実際に使えるアプリを作りながら、Windowsストア・アプリ開発に必要な基礎知識を学ぼう。前後編に分けて紹介。前編ではXAMLの基礎を解説。
XAML要素のコンテンツ
開始タグと終了タグの間には、何かほかのものを記述できる。それをXML用語では「内容」(原語をカタカナ書きすれば「コンテント」)というが、マイクロソフト用語では「コンテンツ」と呼ぶ。
コンテンツには、文字列かXAML要素を記述できる。実際に何が記述できて、それがどういう意味になるかは、元のXAML要素によって異なる。例えば、<TextBlock>要素には、コンテンツとして文字列を記述できる(次のコード)。
<TextBlock>Hello, world! </TextBlock>
これはTextBlockの開始タグにText属性を指定したのと同じである。
コンテンツとしてコントロールを表すXAML要素を記述すると、コントロールを入れ子にしたことになる。例えば次のコードでは、Gridコントロールの中にTextBlockコントロールを配置している。
<Grid>
<TextBlock Text="Hello, world!" />
</Grid>
上のXAMLコードは次のC#コードとほぼ等価である(上のXAMLコードでは、「grid」という名前の変数は生成されない)。
var grid = new Grid();
grid.Children.Add(new TextBlock { Text = "Hello, xaml", });
なお、コンテンツとして複数のコントロールを配置できるものと、1つしか置けないものとがあるので、注意してほしい。上のGridコントロールには、複数のコントロールを入れられる。しかし、例えばPageコントロールには、1つしかコントロールを含めることができない。
属性の別の記法
コンテンツとしては、「プロパティ要素」も記述できる。これは属性の特別な表記の方法だ。例えば、TextBlockコントロールのTextプロパティは、次のようなプロパティ要素としても記述できる。
<TextBlock>
<TextBlock.Text>Hello, world!</TextBlock.Text>
</TextBlock>
これは<TextBlock>要素のText属性に「Hello, world!」と指定したのと同じである。
このプロパティ要素構文を使うことで、単純な文字列では表現できないような複雑なオブジェクトも属性値として与えられる。例えば、GridコントロールのRowDefinitionsプロパティに、2つのRowDefinitionオブジェクトを持つコレクションをセットするXAMLコードは次のようになる。
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="140"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
</Grid>
これでGridコントロールの中を上下2行に分割できる。上の行は高さ140px、下の行の高さは残り全部である。
なお、ほかのコンテンツとプロパティ要素を混在させる場合には、プロパティ要素をコンテンツの最初か最後に置かねばならないので注意してほしい(一般には、プロパティ要素を最初に書いて、その後ろに他のコンテンツとなる要素を書く)。
コメント
XAMLでのコメントは、「<!--」で始まり、「-->」で終わる。コメントの中では、2文字以上続く「-」文字は記述できない。
コメントの中にコメントは記述できない。また、タグの中にもコメントは記述できない。
Copyright© Digital Advantage Corp. All Rights Reserved.