XAML (Extensible Application Markup Language)

XAML (Extensible Application Markup Language)

Microsoft社が開発した、アプリケーションソフトの画面表示を記述することができるXMLベースのフォーマット。

XAMLはウィンドウに要素を配置して装飾やレイアウトなどを指定するためのマークアップ言語の一種で、WebページをHTMLで記述するように、アプリケーションソフトのユーザインターフェースをマークアップ言語で記述することができる。ASP.NETなどと組み合わせて、Webアプリケーションの画面描画に利用することもできる。

XAMLはMicrosoft .NET Framework 3.0を基盤としており、同フレームワークで定義されている表示要素を組み合わせて、画面を構成する。単純な文字や画像から、テキストボックスやボタンなどの入力要素、線や円など図形描画、複雑なベクターグラフィックスや3Dオブジェクト、およびそれらの変形やアニメーションなどの効果を利用できる。

特定の入力要素の値を変数と結びつけたり (データバインディング)、オブジェクトの相互の関係を定義したり、ユーザの操作に応じてイベント処理を設定したりすることもできる。

XAMLとは 【Extensible Application Markup Language】 - 意味/解説/説明/定義 : IT用語辞典

オブジェクト要素

<StackPanel>
  <Button Content="Click Me" />
</StackPanel>

属性 (プロパティ)

オブジェクト要素のプロパティを指定します。

<Button Foreground="Red" Content="This is a button" />

プロパティ要素

属性の構文では表現できないプロパティを指定します。プロパティ要素の構文は<型名.プロパティ名>として、型名を指定します。

<Button>
  <Button.Foreground>
    <SolidColorBrush Color="Red" />
  </Button.Foreground>
  <Button.Content>
    This is a button
  </Button.Content>
</Button>

コレクション

特定のプロパティがコレクション型を受け取るとき、そのプロパティの子要素として宣言することで、そのコレクションの一部となります。

<LinearGradientBrush>
  <LinearGradientBrush.GradientStops>
    <GradientStop Offset="0.0" Color="Red" />
    <GradientStop Offset="1.0" Color="Blue" />
  </LinearGradientBrush.GradientStops>
</LinearGradientBrush>

コンテンツ プロパティ

クラスのプロパティのうち、1つだけをコンテンツ プロパティとして指定できます。コンテンツ プロパティの値はその要素の子要素を使用して設定でき、プロパティ要素を省略できます。

たとえば、

<Border>
  <Border.Child>
    <TextBox Width="300" />
  </Border.Child>
</Border>

では、BorderのChildがコンテンツ プロパティとして指定されているため、<Border.Child>プロパティ要素を省略して、

<Border>
  <TextBox Width="300" />
</Border>

のように記述できます。

属性 (イベント)

属性の構文はイベントでも使用できます。これはプロパティの代わりにイベントを指定しているだけで、構文はプロパティの場合と同じです。

  • 属性の名前 … イベントの名前
  • 属性の値 … イベントのデリゲートを実装するハンドラの名前
<Button Click="Button_Click" >Click Me!</Button>

WPF (Windows Presentation Foundation)

連載:WPF入門:第2回 WPFとXAMLの関係とは? XAMLの基礎を学ぶ (1/3) - @IT

WPF

参考