MS_XAML - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki

XAML

概要

XAMLについて。

XAMLは、

などで使用されている。

最近は、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;

「マークアップ言語なのに複雑な処理を書ける」のは、
オブジェクト グラフの構築をそのまま記述しているからである。

詳細

UIサブシステム

WPF / Silverlight以降

  • ココからは、XAML based UIとして、
    WPF/Silverlightの登場以降に追加されたもの。

  • 昨今、JavaScriptのUI開発技術の生産性が上がってきたので、
    XAML系は、もう頑張らなくて良いのでは?という気もする。

Metro or Modern

2012年8月から、MetroからModernに名称が変更。

補足(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の基礎(microsoft.com)

主なマークアップ拡張

拡張 用途
{Binding} データ バインディング
{StaticResource} リソースの静的参照(起動時に解決)
{DynamicResource} リソースの動的参照(実行時に追従)
{TemplateBinding} テンプレート内から親コントロールのプロパティを参照
{RelativeSource} 相対位置(親要素など)を基準にバインド
{x:Static} 静的メンバの参照

Tags: 移行, .NET開発, UIサブシステム, WPF/Silverlight, XAML

⚠️ **GitHub.com Fallback** ⚠️