WPFでのMVVMパターン実装について、やっと完了~。 | Rock Around The Clock - 24時間とおしで、前後にゆれてください

Rock Around The Clock - 24時間とおしで、前後にゆれてください

Rock について語る!?(予定)
と、プログラミングもやっぱりねっ!

なんかどこかでも書いた気がするけど(^^;


WPFでのMVVMパターン実装について、やっと完了~。
GW明けから調査して、MVVM賢者さんたちのブログなども参考にして、勉強会も参加して、うう、難しかった(TT)

原初的(というかMVVMでの実装基本)なMVVMについて書いんですが、結局ソースコード込みで、A4で170Pくらいとなりました。コード沢山入り。きつかった…歳​のせいか頭の回転、超鈍ってるし…頭というか、目ですね目(w)

MVVMなんぞや?だけではなくて、MVVMで実装するために必要なWPFの知識等も書いたのでちょっと嵩張ってしまいましたね。読んでくれたある人は、「基礎って書いてるのに、結構ハードル高いなぁ」だそうですが、もとより.NET初級者は相手にしていないので無視しとく(><)
※多分、WPF(XAML)が最初はとっつきにくいってだけなんだと思いますけど。


最初は、MVVMそのものっていったい…というか、Modelそのものの扱いが一番悩みました。
というのも、ミニマムなサンプルですとModel=EF(EntityFramework)だったり、数行のクラスだったりしますから、いったいModelはなんなんだろう?っていう事で悩みました。
あまり大きいものだと、データベースの構造と業務処理の実装内容に目が行ってしまい、なかなか難しいものがありmした。(これは、尾上氏も言っていたので、やはり・・・となっとく)

結局、コードそのものに捉われずに、各部位(View, ViewModel, Model)の債務・分担が何なのか?を注視すべきだという尾上氏の言葉で「はっは~ん」となったわけですね。


ここからは、もうWPFの中身を覗いて行く感じで、なかなかに面白かったです。

・XAMLレイアウトの基本事項
・DPシステムな話(依存ほげほげとか)
・コントロールテンプレートの話
・データテンプレートの話
・コントロールカスタマイズ方法とか0から作成する方法とか
・リソースの取り扱い方各種
・データコンテキストってなぬ?とか
・WPFアプリ起動の仕組み
・ほげほげコレクションとか
・イベントの話
・xmlnsの話
・ICommand
・IDataErrorInfo
・MVVMとは!
・責務な話


サンプルアプリは、小さすぎず、かといって大きすぎず…
紙面からコピペでも作れるように、DBを使わず…
これは悩みました。

結局、LocalServiceのコントロールと行うものにしました。
Modelが小さいけども、たんなるデータソースには見えないだろうと…
全サービスリストに対してクエリするとタブがポコポコ増えていき、開始終了スタートできる感じで。
依存サービスもCellにドロップダウンで表示されたりとか。
ちょっと業務アプリ色が無いのが残念ですが、Model(業務アプリ)側は、少し過剰な構造(インタフェース・クラス数)として、「ね!よ~くみると、全く親方向への依存ないでしょ!」って逃げるというか・・・(^^;;;;
まぁ、業務アプリ作るうえで必要な事は結構書かれているだろうと思ったり。

ViewModelは4つ。
MainWindow, TabItem用, クエリーのFilter文字列用, ボタン配列用
まぁ、そこそこな感じになったかな。
アクションビヘイビアが、参考で2個

MessangerパターンとWeakEventパターンは、説明面倒なので割愛(><)
いあ、ちょっともやーんとしてる部分があるので、うまい言葉をひねり出せなかった(><)
まぁ、MVVMの基礎だからいいかなと・・・


WPFって最初は、うさんくさいなーって思ってたんですが、知れば知るほど、面白い仕組みがあって、イジリがいがある感じですねー。
今後どうなっちゃうか、ちょっと不安ですが…

まぁ、でも、XAMLやMVVMパターンは多分、しばらく無くならないだろうし。
まいっか(w)


でも、締めの言葉は、「まじめに開発するなら、Livetとか MVVM Light toolkit とか Prosm 使ってね!」なんだよなぁ(^^;