MS_XAML - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki
- 戻る(WPF/Silverlight)
XAMLについて。
XAMLは、
- WPF を XAML で書く。
- Silverlight を XAML で書く。
- Windows Phone 8.1 アプリ
- Windows Store App(Windowsストアアプリ)
- Xamarin.Forms
- WF(Windows Workflow Foundation)のワークフロー定義
などで使用されている。
最近は、Xamarinや、UWPなどでもXAMLが使用されているもよう。
以下では、WPF / Silverlight 開発における
XAMLの利用方法を説明する。
移行メモ(正式名称と読み): XAML = eXtensible Application Markup Language。
「ザムル」と読む。XML をベースにした宣言的なマークアップで、
要素名が .NET の型名、属性名がプロパティ名に対応する
という単純な規則が中核にある。<Button Content="OK" Width="80" Click="Button_Click" />これは、次の C# と等価である。
var b = new Button(); b.Content = "OK"; b.Width = 80; b.Click += Button_Click;「マークアップ言語なのに複雑な処理を書ける」のは、
オブジェクト グラフの構築をそのまま記述しているからである。
-
ココからは、XAML based UIとして、
WPF/Silverlightの登場以降に追加されたもの。 -
昨今、JavaScriptのUI開発技術の生産性が上がってきたので、
XAML系は、もう頑張らなくて良いのでは?という気もする。
2012年8月から、MetroからModernに名称が変更。
-
下記コンセプトのUIを、
- XAML based UIとして開発。
- Windowsプラットフォームに限定される。
-
参考
- Modern UI - Wikipedia
https://ja.wikipedia.org/wiki/Modern_UI
- Modern UI - Wikipedia
補足(XAML 方言の乱立という問題): 「XAML」と一括りにされるが、
実体はプラットフォームごとに別物であり、これが XAML 系の
学習コストと移植コストを押し上げてきた。
系統 名前空間・特徴 WPF XAML 最も機能が豊富。 ControlTemplate/Freezable/ 3D ありSilverlight XAML WPF のサブセット。機能が削られている UWP / WinUI XAML WPF とは別系統。コントロール名は似ているが API が異なる Xamarin.Forms / .NET MAUI XAML 抽象 UI を各 OS ネイティブに変換。WPF の XAML はそのままでは動かない 「XAML を覚えれば全部書ける」わけではないことは、
採用検討時に押さえておきたい。
-
XAML - Wikipedia
https://ja.wikipedia.org/wiki/Extensible_Application_Markup_Language -
XAMLの基礎知識 - @IT
http://www.atmarkit.co.jp/fdotnet/basics/xaml_index/index.html
-
XAML の概要 (WPF)
https://learn.microsoft.com/dotnet/desktop/wpf/xaml/ -
XAML 構文の詳細
https://learn.microsoft.com/dotnet/desktop/wpf/xaml/xaml-syntax-in-detail -
WPF における分離コードと XAML
https://learn.microsoft.com/dotnet/desktop/wpf/xaml/code-behind-and-xaml -
マークアップ拡張機能と WPF XAML
https://learn.microsoft.com/dotnet/desktop/wpf/xaml/markup-extensions-and-wpf-xaml -
XAML 名前空間 (x:) 言語機能
https://learn.microsoft.com/dotnet/desktop/xaml-services/namespace-language-features
| 拡張 | 用途 |
|---|---|
{Binding} |
データ バインディング |
{StaticResource} |
リソースの静的参照(起動時に解決) |
{DynamicResource} |
リソースの動的参照(実行時に追従) |
{TemplateBinding} |
テンプレート内から親コントロールのプロパティを参照 |
{RelativeSource} |
相対位置(親要素など)を基準にバインド |
{x:Static} |
静的メンバの参照 |
Tags: 移行, .NET開発, UIサブシステム, WPF/Silverlight, XAML