社畜ねこのお勉強会

WPFの勉強ブログです。


【WPF】2回目:XAMLとは一体

今会えるアイドル、週末ヒロインもくもくです。
嘘です。

前回、とりあえずWPFプロジェクト作ってみましたが、
XAMLというよく知らない子が出てきてしまいました。

今回はそのXAMLについて調べてみます。

ずばり「XAML」とは

MicrosoftDocsに「XAMLの概要 > XAMLとは何ですか。」というピンポイントな項目がありました。ラッキー!
早速読んでみましょう。
MicrosoftDocs「XAMLの概要 > XAMLとは何ですか。」

ね、全然わかんない。

ただでさえ難しい言葉を使っているであろう文章が自動翻訳でむっちゃむちゃです。
英語読めないうるわし大和男子は僕と一緒にWeblio辞書センパイに頼りましょう。
Weblio辞書「IT用語辞典 > XAMLとは」

さっきよりは分かったので簡単にまとめてみます。

  • Extensible Application Markup Language の略
  • 読み方は「ザムル」
  • Microsoftが開発した、アプリソフトのUIを記述するための言語仕様
  • HTMLでWebページの構造を定義するように、XAMLでアプリの外観やボタン配置等を設定できる

要はほぼWPFのUI定義専用の言語と考えてよさそうですね。
だいぶ敷居が下がったような気がします。

自動生成されたXAMLファイルを読む

ではまずプロジェクト作成時に自動生成されていたXAMLファイルの中身を読んでみます。
HTMLと同感覚的なことも書いてあったんでイケるでしょ。

f:id:shachiku_cat:20180524211915p:plain
f:id:shachiku_cat:20180524213835p:plain
全然わかんないね、順番に見ましゅ。

Windowタグ
ルート要素です。名前の通り画面の定義です。
これ、常にルート要素はWindowタグかというとそうではなく、

と、作りたいものによってちゃんと変える必要があります。
まぁ、そりゃそうか。
++C++; // 未確認飛行 C「XAMLの基本構造(WPF) > 基本構造」

x:Class
前回、「外観はXAML、動作はC#」って言ったと思うんですけど、コレお互いの関係性を明示してあげる必要ありそうじゃないですか?
属性「x:Class」は名前の通り、クラス名を指定するところです。
指定したクラスとしてコンパイルされるので、C#側と合わせておけば一心同体少女隊というわけです。
f:id:shachiku_cat:20180524215231p:plain
ちなみに「名前空間.クラス名」で、ルート属性にしか付けられないそうです。
MicrosoftDocs「x:Class Directive」

xmlns
おまじないです。

嘘です。これはどんなルールで書かれてまっせという定義です。
山カッコ付ければ何でもXAMLかっつったらそうではないのでね、定義が必要です。

  • 無印:基本
  • x:XAML自身の言語機能
  • d:ビジュアル・デザイナ上だけで使う機能
  • mc:アプリ実行時に不要な機能を無視する用

ちなみに何故xとか名前を付けて定義しているかというと、
例えば、無印にもxにも「name」という属性の定義があったら、何らか見分けを付ける必要がありますよね。それです。
僕もちょっと実感としてよくわからないので、今後出てきたら掘り下げます。
まぁでも言うておまじないですよね
@IT「連載:次世代技術につながるSilverlight入門 > XAMLの基礎」

mc:Ignorable
英語読めないそこのニンジャたちは「Ignorable」の意味分かりますか?
「無視できる」って意味だそうです。
さっきxmlnsの中で「mc:アプリ実行時に不要な機能を無視する用」って出しましたが、それ絡みです。
mcに何を無視させるか、という定義です。
ビジュアル・デザイナでしか使わない機能はアプリ実行時には不要なので、dを無視します~ということになりますね。

Title, Height, Width
画面名、画面の高さ、画面の幅。

Gridタグ
コードではなくデザイン側を見ると、一見何も無いように見えますが、Windowの中に何か四角いの居ますね。
「Gridは、コントロールをマス目で並べるときにとっても便利なコントロールです。」
って書いてあったんでそういうことですね。まんまですね。
泥庭「Gridへのアイテムのバインド(WPF編)」

はい、全部読み終わりました。
全体的に所謂おまじないでしたが、多少知った上で進めたいもんですよね。

じゃあ次はお決まりのアレ…いっときます?

3回目、更新しました!
shachiku-cat.hateblo.jp

余談:XAMLの読み方について

Weblio辞書センパイのくだりで、実際にページ閲覧したニンジャは見たと思うんですけど、
読み方:ザムル,ザメル
って書いてありましたよね。でも僕はザムルしか書きませんでした。
何故かというと、ザムルとザメル、どっちが一般的なのかな~ってググってみたんですよね。

f:id:shachiku_cat:20180524215620p:plain

安産型でかっこいいですね。