Open棟梁Project - マイクロソフト系技術情報 Wiki
...工事中...
XAMLについて。
XAMLは、
などで使用されている。
ここでは、WPF / Siverlight 開発におけるXAMLの利用方法を説明する。
UI を XML 形式で作る、そして MVVM パターンを使ってプロパティとイベントを連結させる(ここの分離は Rx を使っても同じ、あるいは直接コードビハイドでも同じ)パターンとしては、
- Windows Store App を XAML で書く。
- Windows Phone 8.1 アプリを XAML で書く。
- Xcode で iPhone/iPad アプリを Storyboard で書く。
- Android で axml で書く。
- Xamarin.iOS/Android で、storyboard, axml で書く。
- Xamarin.Forms で、Xamarin製XAMLで書く。
- WPF で XAML で書く。
- Siverlight を XAML で書く。
WPFは、.NET Framework 3.0で新しく提供され、Windows Vistaで全面的に採用された、リッチでインタラクティブなUIアプリケーションを開発・実行するためのUIサブシステム(クラス ライブラリ・UIコントロールのセットを含むランタイム・フレームワーク)。Windows VistaのUIサブシステムにはWPFが全面的に採用されており、今後のWindowsのUIアプリケーション開発の標準技術として利用できる。
WPF / Silverlightは、高速なグラフィックスではなく、
を実現するUIサブシステムであるため、Direct3D、DirectShow?、Media Foundationなどを使用して開発する3Dゲームや高品質なビデオ再生アプリの開発には向かないが、業務アプリケーション開発に必要な標準コントロールを備えており、従来の業務アプリケーションにリッチでインタラクティブな効果を追加することも可能である。
WPF / Silverlight は、Visual Studio 2008以降や、Expression Blendを使用して開発が可能。Expression Blendはデザイナ向けツールであり、VSに無い以下の機能を有している。
WPFは、.NET Framework 3.0以上でサポートされており、Windows XPでも動作可能である。ただし、Windows XPは、Windows Vistaとディスプレイ ドライバ モデルが異なるため、条件によっては、GPUによるハードウェア レンダリングが使用できず、ソフトウェア レンダリングになることでCPUへの負荷が増えたり、見え方が若干変わったりする場合もある。
WPF/SilverlightのOS要件
項番 | OS | WPF(.NET Framework) | Silverlight 3 | Silverlight 4 | ||
3.0 | 3.5 | 4.0 | ||||
1 | Windows 7 | - | ○ | ○ | ○ | ○ |
2 | Windows Server 2008 R2 | - | ○ | ○ | ○ | ○ |
3 | Windows Vista | ○ | ○ | ○ | ○ | ○ |
4 | Windows Server 2008 | ○ | ○ | ○ | ○ | ○ |
5 | Windows XP | ○ | ○ | ○ | ○ | ○ |
6 | Windows Server 2003 | ○ | ○ | ○ | ○ | ○ |
7 | Windows 2000 (SP4) | - | - | - | ○ | - |
8 | Mac OS X 10.4.11 以上(Intelベース) | - | - | - | ○ | ○ |
ハードウェア要件、追加のソフトウェア要件を含めた詳細は以下を参照
WPF / Silverlightアプリケーションの開発には以下のような特徴がある。
また、XAMLは、XMLをベースとしており各要素からツリー構造のCLRオブジェクトをインスタンス化できる。このため、XAMLは、「ツリー構造のCLRオブジェクトをインスタンス化するためのマークアップ言語」と説明することも可能である 。XAMLによるCLRオブジェクト生成の例は、以下を参考にできる。
UI部分にXAML、プログラム部分にCLR言語と、UI・プログラム部分を分離して記述・実装できるので、Webアプリケーションと同様に画面デザイン(画面モックアップ開発)とプログラム開発の分業が可能である。例えば、UI開発ツールに特化したExpression Blendで、VSソリューション(プロジェクト)ファイルをそのまま開き、XAMLを直接作成・編集することもできる。
WPFにおける分離コードを実現するためには、従来のWindowsフォームや、ASP.NETアプリケーション(Webフォーム)と同様に、分離クラス(コードビハインド)と、.NET Framework 2.0からサポートされたパーシャル クラスが使用される。XAMLファイルから分離クラス(コードビハインド)ファイルを関連付けるためには、XAML上で「x:Class」、「x:Subclass」、「x:ClassModifier?」などのディレクティブを定義する。なお、「x:Code」ディレクティブを定義すればXAML上にインラインでコードを実装することもできる。また、分離クラス(コードビハインド)ファイルから、XAMLファイルで生成したCLRオブジェクトにアクセスするには、「x:Name」ディレクティブ、または、Name属性を付与する必要がある。これらのディレクティブについては、「ディレクティブ」を参照のこと。
中間生成物であるパーシャル クラスは、ビルド アクション = Pageに設定されている(WindowやPageの)XAMLから生成され、分離クラス(コードビハインド)と統合されてビルドされる。
テキスト ベースの記述、デザイナを使用した記述が可能。
が可能。
が可能 。
通常は、VSを利用すればIDE機能としては事足りるが、Expression Blendでしかできない「デザイナ向け機能」を使用する場合は、Expression Blendを使用する。
WPF / Silverlightアプリケーション開発は、C#、VBなどの、標準的なプログラム言語を使用できるため開発要員を確保しやすい。また、VSデザイナを使用すれば、Windowsフォーム、ASP.NETアプリケーション(Webフォーム)と同様な開発が可能であることが分かる。また、WPF / Silverlightの双方で、ランタイムは異なるもののUIサブシステムのフレームワークの基本的な構造については同じものを共用できる。このUIサブシステムのフレームワークを習得すれば、双方の開発が可能となる(ただし、双方の違いは理解しておく必要がある。「Silverlightについて」を参照)。ただし、高度な処理を実装する場合や、トラブルシュートを行う場合は、UIサブシステムのフレームワーク、XAMLの読み方・書き方をある程度は知っておく必要がある。しかし、これらの仕様は大きく、複雑で把握するのに時間がかかる。この点に関して、WPF / Silverlightアプリケーションの開発は、敷居が高いと言える。
P/InvokeやRCW呼出しなどWin32連携技術を使用した相互運用が可能である。また、WindowsFormsHost?、Hwndhost を使用することで、WindowsフォームやActiveXのUIコントロールを使用することも可能である(パフォーマンス的には不利)。
例えば、下記は、System.Windows.Forms名前空間のDataGrid?コントロールをホストするWPFの例である。
<Window x:Class="WpfApplication1.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms" Title="HostingWfInWpf" Height="150" Width="300" Loaded="Window_Loaded"> <Canvas> <WindowsFormsHost Name="windowsFormsHost1" Height="100" Width="275"> <wf:DataGrid x:Name="dataGrid1"/> </WindowsFormsHost> </Canvas> </Window>
項番 | 略語 | 正式名称 |
1 | UI | User Interface |
2 | D&D | Drag and Drop |
3 | GDI | Graphics Device Interface |
4 | GPU | Graphics Processing Unit |
5 | JS | JavaScript |
6 | Ajax | Asynchronous JavaScript + XML |
7 | JSON | JavaScript Object Notation |
8 | REST | Representational State Transfer |
9 | POX | Plain Old XML |
10 | SEO | Search Engine Optimization |
11 | VS | Visual Studio |
12 | VB | Visual Basic |
13 | IE | Internet Explorer |
14 | WMV | Windows Media Video |
15 | WMA | Windows Media Audio |
16 | CLR | Common Language Runtime |
17 | DLR | Dynamic Language Runtime |
18 | CAS | Code Access Security |
19 | RCW | Runtime Callable Wrapper |
20 | WPF | Windows Presentation Foundation |
21 | WPF/E | Windows Presentation Foundation / Everywhere |
22 | XAML | eXtensible Application Markup Language |
23 | BAML | Binary Application Markup Language |
24 | XBAP | XAML Base Application |
25 | MVVM | Model - View - View Model |