XAMLが難しいと思ったのでXAMLとは何かについて調べた
XAMLとはなにか
この記事はこちらのXAML Tutorialを翻訳・要約・補足した内容となります。
他記事からの引用も有るため多少原文にはない内容がありますので、
原文を当たりたい方はリンクまでお願いします。原文も平易な英語で読みやすいです。
リンクのチュートリアルはプラットフォームに依存しないXAMLの解説を狙いとしていますが、
本記事はWPFアプリケーション開発を前提としたXAMLの解説としている点ご理解ください。
Xamarin、UWPはわかりません。
対象読者
XAMLに少し触ったがいまいち理解が深まらない初学者。
XAMLとは何か?
XAMLとは「宣言型マークアップ言語」
- 宣言型:
- SQLなどのように「何を得たいか」を定義するプログラム構成。
『SQLのクエリは「どのようなデータが欲しいか」を宣言し、どのテーブルから先に見るかなどといった「いかにしてデータベースにアクセスするか」という命令・手続きには関与しない。』
(Wikipedia-宣言型プログラミング引用)
XAMLはインスタンスを階層的に表現する言語
- 『XAMLはオブジェクトのインスタンスを組み立てるための言語』
- SQLなどのように「何を得たいか」を定義するプログラム構成。 『SQLのクエリは「どのようなデータが欲しいか」を宣言し、どのテーブルから先に見るかなどといった「いかにしてデータベースにアクセスするか」という命令・手続きには関与しない。』 (Wikipedia-宣言型プログラミング引用)
私はHTMLのような感覚で書いて本質が理解できずつまづきましたが、XAMLの本質はC#コード(のようなもの)で
インスタンスを初期化してプロパティ値を入れる作業に過ぎません。
実際、XAMLをC#コードで表現することもできます。
ですからXAMLは『UI特化言語ではない』のです。(XAML入門より引用)
//下記2つの記述は同じ結果となる。
//XAML
<StackPanel>
<TextBlock Text = "Welcome to XAML"/>
<Button Content = "Ok" Height = "20"/>
</StackPanel>
//C#コード
//StackPanelインスタンス作成
StackPanel stackPanel = new StackPanel();
this.Content = stackPanel;
//TextBlockインスタンス作成
TextBlock textBlock = new TextBlock();
textBlock.Text = "Welcome to XAML Tutorial";
stackPanel.Children.Add(textBlock);
//Buttonインスタンス作成
Button button = new Button();
button.Content = "OK";
button.Height = 20;
stackPanel.Children.Add(button);
(XAML vs C#Code)[https://www.tutorialspoint.com/xaml/xaml_vs_csharp_code.htm]
XAMLの利点
初期のGUIフレームワークでは、アプリケーションの見た目と振る舞いを分けて考えることができませんでした。
C#やVB.netなど、GUIと振る舞いを同じ言語で作成していたため、UIとそれに付随する動作の両方を実装するには開発者の手間がかかっていました。
XAMLでは、デザイナーのコードからビヘイビアを分離することが非常に簡単です。
そのため、XAMLプログラマーとデザイナーは並行して作業することができます。XAMLのコードは非常に読みやすく、理解しやすい。
XAMLはどうやって動いているのか?
前述の通り、XAMLはXAMLプロセッサによってコードにコンパイルされ、C#コード同様.NETコンパイラーがアプリを構築します。
まとめ
今回はXAMLとは何かという概要だけ説明しました。
要点としては「インスタンスを階層で表している」に尽きると思います。
これを理解していれば究極MSDNを参照しながら開発してゆけることでしょう。究極は、ね………。
Author And Source
この問題について(XAMLが難しいと思ったのでXAMLとは何かについて調べた), 我々は、より多くの情報をここで見つけました https://qiita.com/tkhshiq/items/7bd4eee3e28627b8054f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .