XAMLの種類
XAMLの種類
XAMLは利用局面で違いがあります。
たとえば、文字列を表示するのにWPFならLabelを使うことができますがSilverlightにはないようです。
XAMLスクリプトを利用するケースは大きく2つあります。
- WPFアプリケーションやSilverlightアプリケーションなどのプログラミング
- XAML記述をブラウザで開く
しかし、XAMLの機能的な差は、これとは関係なく、ランタイムが2系統あることによります。
Silverlight と .NET Framework
XAMLを解釈実行する仕組みが2系統あることは確かです。
1つは、.NET Framework で OS の付き物になっています。特にインストールすることなくXAMLを使う仕組みが組み込まれています。
もう一つは、SilverlightアプリケーションやXAMLマークアップをブラウザで表示するためのSilverkightのランタイムです。
後者は、Windows だけを対象にしているわけではなく、独立した仕様を持つことになります。また、機能的には .NET Framework がサポートしていても、技術的な理由以外で、Silverlightのランタイムを別途インストールしなければならないようになっています。
WPFアプリケーションは、.NET Framework を使い、Silverlightアプリケーションは基本的にはSilverlightのランタイムを使います。
ブラウザがXAMLファイルを直接開く場合は、.NET Framework が使われます。
ブラウザがXAML記述を処理する、あるいは、HTMLでXAMLをホストする方法は以下の通りです。
-
XAML記述のファイルをブラウザで開く。
-
HTML中に iframe タグを記述し、HTMLページ内に表示する。
-
HTML中に scriptタグを使って、XAML記述を行う。これをSilverlightアプリケーションと同じ方法で実行する。
1,2 のケースは、.NET Framework が使われます。「Silverlightのグラフィック」の例のように、3D(MeshGeometry3Dなど)を使ったXAMLも開けます。
3 は、Silverkightのランタイムが使われ、機能はSilverlightの機能に制限されます。
XAMLとプログラミング
XAMLはXMLの一種なので、同様にデータとしてプログラムで扱うことができますが、ここでは Visual Studio のウイザードが生成する WPF と Silverlightカテゴリの開発手法を考えます。
MFCやFormsなどでは、アプリケーションのGUI要素(コントロール)をデザイナで配置する方法が取られますが、GUI要素自体を記述する能力を持つ XAML を扱うようにしたのがWPFやSilverlightだと思います。
この場合、XAMLマークアップのタグ(エレメント)は、コントロールか、そのパーツを表し、属性は、そのプロパティを指すことになります。
コントロールや、そのパーツは、プログラミング上はクラスであり、XAMLはクラスをコンストラクトでき、クラスの配置と、そのクラスのプロパティの値を設定することができると解釈できます。
XAMLの読み込みは、タグに記述されたエレメントのインスタンス生成を意味します。
このケースのテーマは、プログラムのコードとの連携動作になります。具体的には、XAML記述の分割とVisualとの相互変換です。
「XAMLとビハインドコード」
「カスタムコントロールのXAMLとコード」
「Styleとプロパティ」
「Styleとバインディング」
「DataContextとインスタンス」
「XAML記述とVisualの変換」
「1つのStyle記述から複数のインスタンス」
マークアップ言語としての利用
XAMLもXMLのルールで作られています。その記述に関する仕様は、xmlns の設定で決まることになります。
しかし、このことは、あまり意味がなさそうです。マークアップ記述がパースされる際のルールがあっても、マークアップを記述する際には使われないからです。
プログラミングの場合と異なり、コンパイルされるわけではありませんし、エディタはほとんど入力支援をしません。
結局、「ブラウザが表示するように書く」と言うことだと思います。
マークアップを開くことができるアプリケーションは、ブラウザだけではありません。
ワードなどOfficeシリーズで出力する、XPSファイルはXAMLでドキュメントを記述しています。
「WEBのページを作る」
「HTMLファイルにXAMLを記述」
「IFRAMEタグによるXAMLファイルの参照」
「XAMLマークアップだけでできること」
「XPS中のXAMLの文字コード」
「気が付いたこと(Silverlight)」
「XPS2XAML」
「XPS中のImageBrushとSilverlight」
「XPSファイルでの座標」
「GlyphsをTextBlockに置き換えることの問題点」
「Unicodeについて」
「SilverlightとWPFでのXPSファイルの表示」
「FrameworkElementFactory(コードでTemplateを作る)」
ドメインとの関係
- クロスドメイン
スクリプトは最初に開いたファイルと同じドメインにあることが前提のようです。
実際には、分散して置けるようです。
- 直接、パソコン内のXAMLファイルを開くと警告が出る
- 適切なMIMEタイプ
サーバーは、設定をしないと適切なMIMEタイプを付けないものらしい。
.htaccess が有効なら、
Addtype application/xaml+xml .xaml
気が付いたこと
-
HTML中にXAMLでスクリプトを記述し、名前を付ける。これを、objectタグで表示する。
この場合、Buttonを記述すると一切表示が出なくなる。TextBoxは表示されるが入力はできない。入力機能を持つUIエレメントは使えないと考えられる。
|