WPFことはじめ その0 WPFとは

そうだ、WPFやろう

  1. なんかデスクトップアプリケーションを作りたくなった。
  2. 研究でJavaのGUIを使っているのでどうにか、楽に作れるフレームワークでやりたい。
  3. 持ってる個人のPC、Windowsしかないから.NETでやろう
  4. せっかくならWPFを触ってみよう

と、いうことでWPFでアプリケーションを作っています。
XAMLとか触るの始めてなのでとりあえずいろいろメモしておきます。

WPFとは

Windows Presentation Foundationの略だそうです。

WPFの歴史

WindowsアプリケーションはXP以前まではWinFormsとかいうやつで作られていて、それはそれでかなり使える感じだったんですが、Vista以降GPU食うアプリが増えてきて(というか、OS自体がGPUを食うようになってきて)、それの対処と一緒にGUIのフレームワークを作っちゃえっていうノリのアレです。
そのため、WPFで作ったアプリは激しいCanvasの動きにも耐えられるとか何とか。

大分適当ですが、概ねこんなかんじだと思ってます。
結構なプログラマな方が「WPFすげえ」「WinFormsやめろ」ということを言っていてどんなもんじゃというのを知ってみようというのがモチベーションです。

WinFormsとWPFの違い

主にView部分が大分違います。
WinFormsはC#で自分でゴリゴリ部品を書くか、Visual Studioのデザイナーを使って配置します。
VSのデザイナはかなり完成度が高いほうだとは思うのですが、それでも配置を動的に作ったりするのがどうにもこうにも面倒でした。

WPFでは、WinFormsでのやり方に加え、XAMLというMicrosoftの独自規格のXMLっぽい何かを使ってViewを記述することで動的にフォームを増やしたり、モデルとフォームの分離をやりやすくしたりといったことを行っています。
XAMLは、最終的にコンパイルするときC#と同じような形になるため、XAMLで書けることはC#で全てかけます。ただし、書き方の制限はあるので逆は無理ですが。
XAMLを少し触ってみた感想としては、C#で書くと面倒なView処理を極力XAMLに投げることを意識するとコードがすっきりするように思えます。
大概のGUIのView部品はXAMLで書けるのでXAMLで書くのが難しい部分をC#に書くといった具合です。
ただ、かなり癖が強いのでなれるまでかなり時間がかかりました。
まだまだ、慣れませんが調べつつ書いていくしかなさそうです。

幸い、WPFはVista時代からある古いフレームワークでWindowsアプリケーションに用いられていることも幸いし、公式ドキュメントを始めとしてかなりの情報がWebに転がっています。
まあ、凝ったことをしようとするとアメリカ語の文書を読む羽目になるのはいつもどおりですが…

とりあえず次回からはWPFに必要な概念であるMVVM、XAMLで使ったコントロールの書き方、詰まった部分等々書いていきたいです。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください