Silverlight-xaml-overview
Silverlight-XAMLの概要
Silverlightで作業するときに最初に遭遇することの1つはXAMLです。 XAMLは、拡張可能なアプリケーションマークアップ言語の略です。 これは、XMLに基づいたシンプルで宣言型の言語です。
- XAMLでは、階層関係を持つオブジェクトのプロパティを作成、初期化、および設定するのは非常に簡単です。
- 主にGUIの設計に使用されます。
- ワークフロー基盤でワークフローを宣言するなど、他の目的にも使用できます。
基本的な構文
新しいSilverlightプロジェクトを作成すると、以下に示すように、 MainPage.xaml にデフォルトで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ファイルにはさまざまな種類の情報が記載されていることがわかります。それらのすべてについて、以下の表で簡単に説明します。
Information | Description |
---|---|
<UserControl | Provides the base class for defining a new control that encapsulates the existing controls and provides its own logic. |
x:Class = "FirstExample.MainPage" | It is a partial class declaration, which connects the markup to that partial class code behind, defined in it. |
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation%22 | Maps the default XAML namespace for Silverlight client/framework. |
xmlns:x = "http://schemas.microsoft.c om/winfx/2006/xaml" | XAML namespace for XAML language, which maps it to x: prefix. |
xmlns:d = "http://schemas.microsoft.com/expression/blend/2008%22 | XAML namespace is intended for designer support, specifically designer support in the XAML design surfaces of Microsoft Visual Studio and Microsoft Expression Blend. |
xmlns:mc = "http://schemas.openxmlforma ts.org/markup-compatibility/2006" | Indicates and supports a markup compatibility mode for reading XAML. |
> | End of object element of the root. |
<Grid></Grid> | These are the starting and closing tags of an empty grid object. |
</UserControl> | Closing the object element. |
XAMLの構文規則は、XMLの構文規則とほぼ同じです。 XAMLドキュメントを見ると、実際にはそれが有効なXMLファイルであることがわかります。 XMLでは属性の値は文字列である必要がありますが、XAMLではプロパティ要素構文として知られる別のオブジェクトである可能性があるため、その逆は当てはまりません。
- Object要素の構文は、左山括弧(<)で始まり、その後にオブジェクトの名前が続きます。 ボタン。
- そのオブジェクト要素のプロパティと属性が定義されます。
- Object要素は、スラッシュ(/)に続いてすぐに右山括弧(>)が続く必要があります。
子要素のない単純なオブジェクトの例を以下に示します。
<Button/>
いくつかの属性を持つオブジェクト要素の例-
<Button Content = "Click Me" Height = "30" Width = "60"/>
プロパティを定義する代替構文の例(Property要素の構文)-
<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 Presentation FoundationであるWPFから来ました。 Silverlightは、多くの場合、WPFのサブセットであると説明されています。 SilverlightはWPFではできないことを行うことができるため、これは厳密には真実ではありません。 機能が重複している場合でも、2つの詳細はわずかに異なります。
- WPFとSilverlightは多くの点で非常に似ていると言う方が正確です。 違いはありますが、SilverlightがWPFから借用しているXAML機能を調べることは有益です。 たとえば、Silverlightは、ビットマップとスケーラブルな図形のグラフィックプリミティブを提供します。
- また、ビデオとオーディオをレンダリングするための要素も提供します。
- 単純な書式付きテキストのサポートがあり、任意の要素をアニメーション化できます。 WPFを知っていれば、この機能セットはおなじみでしょう。
- 重要な点の1つは、WPF XAMLをSilverlightで使用できないことです。
- 類似点はありますが、多くの小さな違いもあります。
XAMLとコードビハインド
XAMLは、ユーザーインターフェイスの外観と構造を定義します。 ただし、ユーザーがアプリケーションと対話するときにアプリケーションに何か便利なことをさせたい場合は、コードが必要になります。
- 通常、各XAMLファイルはソースコードファイルに関連付けられており、これをコードビハインドと呼びます。 さまざまなMicrosoftフレームワークがこの用語を使用しています。
- 通常、コードビハインドでは、XAMLで定義された要素を使用して、ユーザー入力に関する情報を取得するか、ユーザーに情報を表示する必要があります。
- 以下に示すXAMLコードでは、 TextBlock および Button が定義されています。 デフォルトでは、アプリケーションが実行されると、Webページとボタンにテキスト「* Hello World!*」が表示されます。
<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";
}
}
}
- UI要素を設計する方法はXAMLだけではありません。 XAMLでオブジェクトを宣言するか、コードで宣言/書き込みするかどうかはユーザー次第です。
- XAMLはオプションですが、これにもかかわらず、 Silverlight デザインの中心です。
- XAMLコーディングの目標は、ビジュアルデザイナーがユーザーインターフェイス要素を直接作成できるようにすることです。 したがって、 Silverlight は、マークアップからユーザーインターフェイスのすべての視覚的側面を制御できるようにすることを目的としています。