Silverlight-XAMLの概要
Silverlightを使用するときに最初に遭遇するものの1つは、XAMLです。XAMLは、Extensible Application MarkupLanguageの略です。これは、XMLに基づく単純で宣言型の言語です。
XAMLでは、階層関係を持つオブジェクトのプロパティを作成、初期化、および設定するのは非常に簡単です。
主にGUIの設計に使用されます。
ワークフローファンデーションでワークフローを宣言するなど、他の目的にも使用できます。
基本構文
新しいSilverlightプロジェクトを作成すると、デフォルトでいくつかのXAMLコードが表示されます。 MainPage.xaml 以下に示すように。
<UserControl x:Class = "FirstExample.MainPage"
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d = "http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable = "d"
d:DesignHeight = "300" d:DesignWidth = "400">
<Grid x:Name = "LayoutRoot" Background = "White">
</Grid>
</UserControl>
上記のXAMLファイルにはさまざまな種類の情報が記載されていることがわかります。それらはすべて、以下の表で簡単に説明されています。
情報 | 説明 |
---|---|
<UserControl | 既存のコントロールをカプセル化し、独自のロジックを提供する新しいコントロールを定義するための基本クラスを提供します。 |
x:Class = "FirstExample.MainPage" | これは部分クラス宣言であり、マークアップをその中で定義されている部分クラスコードビハインドに接続します。 |
xmlns = "http://schemas.microsoft.com / winfx / 2006 / xaml / presentation" | Silverlightクライアント/フレームワークのデフォルトのXAML名前空間をマップします。 |
xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml" | XAML言語のXAML名前空間。x:プレフィックスにマップされます。 |
xmlns:d = "http://schemas.microsoft.com/expression/blend/2008" | XAML名前空間は、デザイナーサポート、特にMicrosoft VisualStudioおよびMicrosoftExpressionBlendのXAMLデザインサーフェスでのデザイナーサポートを目的としています。 |
xmlns:mc = "http://schemas.openxmlforma ts.org/markup-compatibility/2006" | XAMLを読み取るためのマークアップ互換モードを示し、サポートします。 |
>> | ルートのオブジェクト要素の終わり。 |
<グリッド> </グリッド> | これらは、空のグリッドオブジェクトの開始タグと終了タグです。 |
</ UserControl> | オブジェクト要素を閉じます。 |
XAMLの構文規則は、XMLの構文規則とほぼ同じです。XAMLドキュメントを見ると、実際には有効なXMLファイルであることがわかります。XMLでは属性の値は文字列である必要がありますが、XAMLではプロパティ要素構文と呼ばれる別のオブジェクトである可能性があるため、その逆は当てはまりません。
Object要素の構文は、左山括弧(<)で始まり、その後にオブジェクトの名前が続きます(例:Button)。
そのオブジェクト要素のプロパティと属性が定義されています。
Object要素は、スラッシュ(/)の直後に直角ブラケット(>)を付けて閉じる必要があります。
子要素のない単純なオブジェクトの例を以下に示します。
<Button/>
いくつかの属性を持つオブジェクト要素の例-
<Button Content = "Click Me" Height = "30" Width = "60"/>
プロパティを定義するための代替構文の例(プロパティ要素構文)-
<Button>
<Button.Content>Click Me</Button.Content>
<Button.Height>30</Button.Height>
<Button.Width>60</Button.Width>
</Button>
子要素を持つオブジェクトの例:StackPanelには、子要素としてTextblockが含まれています。
<StackPanel Orientation = "Horizontal">
<TextBlock Text = "Hello"/>
</StackPanel/>
SilverlightでXAMLを使用する理由
XAMLは元々Silverlight用に発明されたものではありません。これは、Windows PresentationFoundationであるWPFからのものです。Silverlightは、WPFのサブセットであると説明されることがよくあります。SilverlightはWPFではできないことを実行できるため、これは厳密には当てはまりません。機能が重複している場合でも、2つは細部がわずかに異なります。
WPFとSilverlightは多くの点で非常に似ていると言った方が正確です。違いはありますが、SilverlightがWPFから借用したXAML機能を確認することは依然として有益です。たとえば、Silverlightは、ビットマップとスケーラブルな形状のグラフィックスプリミティブを提供します。
また、ビデオとオーディオをレンダリングするための要素も提供します。
シンプルなフォーマットのテキストをサポートしており、任意の要素をアニメーション化できます。WPFをご存知の場合、この機能セットはおなじみです。
重要な点の1つは、WPFXAMLを取得してSilverlightで使用することはできないということです。
類似点はありますが、小さな違いも多数あります。
XAMLとコードビハインド
XAMLは、ユーザーインターフェイスの外観と構造を定義します。ただし、ユーザーがアプリケーションを操作するときにアプリケーションに役立つことを実行させたい場合は、コードが必要になります。
各XAMLファイルは通常、ソースコードファイルに関連付けられています。これをコードビハインドと呼びます。さまざまなMicrosoftFrameworkがこの用語を使用しています。
コードビハインドは通常、XAMLで定義された要素を使用して、ユーザー入力に関する情報を取得するか、ユーザーに情報を表示する必要があります。
以下のXAMLコードでは、 TextBlock そして Button定義されています。デフォルトでは、アプリケーションを実行すると、「」というテキストが表示されます。Hello World!」をWebページとボタンに表示します。
<UserControl x:Class = "FirstExample.MainPage"
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d = "http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable = "d"
d:DesignHeight = "300" d:DesignWidth = "400">
<Grid x:Name = "LayoutRoot" Background = "White">
<StackPanel>
<TextBlock x:Name = "TextMessage"
Text = "Hello World!"
Margin = "5">
</TextBlock>
<Button x:Name = "ClickMe"
Click = "ClickMe_Click"
Content = "Click Me!"
Margin = "5">
</Button>
</StackPanel>
</Grid>
</UserControl>
コードビハインドは、で名前が付けられた任意の要素にアクセスできます x:Name 指令。
名前付き要素は、コードビハインドのフィールドから使用できるようになり、コードが通常の方法でこれらのオブジェクトとそのメンバーにアクセスできるようになります。
ザ・ x:Prefix 名前が通常のプロパティではないことを示します。
x:Name は、コードビハインドでこのオブジェクトにアクセスしたいというXAMLコンパイラへの特別なシグナルです。
以下に示すのは、ボタンクリックイベントの実装です。 TextBlock テキストが更新されます。
using System.Windows;
using System.Windows.Controls;
namespace FirstExample {
public partial class MainPage : UserControl {
public MainPage() {
InitializeComponent();
}
private void ClickMe_Click(object sender, RoutedEventArgs e) {
TextMessage.Text = "Congratulations! you have created your first Silverlight Applicatoin";
}
}
}
XAMLは、UI要素を設計する唯一の方法ではありません。XAMLでオブジェクトを宣言するか、コードで宣言/書き込みするかはあなた次第です。
XAMLはオプションですが、それにもかかわらず、XAMLは Silverlight 設計。
XAMLコーディングの目標は、ビジュアルデザイナーがユーザーインターフェイス要素を直接作成できるようにすることです。したがって、Silverlight マークアップからユーザーインターフェイスのすべての視覚的側面を制御できるようにすることを目的としています。