プログラムを中心とした個人的なメモ用のブログです。 タイトルは迷走中。
内容の保証はできませんのであしからずご了承ください。

ラベル MVVM の投稿を表示しています。 すべての投稿を表示
ラベル MVVM の投稿を表示しています。 すべての投稿を表示

2016/10/23

ViewModel における Model のインスタンスの共有

event_note

WPF + MVVM でアプリケーションを作成していくにあたり、まずは View と ViewModel の関係について勉強してきました。
そして、いざ Model を実装しようとしたのですが、ネット上にあるサンプルプログラムなどを見てみると、 Model のインスタンスを ViewModel で作成しているのです。
私が最終的に作成したいと思っているアプリケーションは、複数の画面に同じ状態を表示したり、GUIなしで動作する場合もあるようなものなので、ViewModel で Model をインスタンス化するのはどうなんだろうと思いました。

んで、軽くググってみると同じような質問が teratail にありました。
このような場合、Singleton にするのが一般的なようです。

2016/10/15

WPF + MVVM の勉強4:コマンドの実装をラムダ式で

event_note

2016/09/19

定義済みデリゲート

event_note

私は最初に猫でもわかるC#プログラミングという本でC#の勉強をしましたが、その中で唐突に Func やら Actionやらが登場し、ほとんど説明がなかったのでちんぷんかんぷんでした。
ネットで調べてやっとわかったのですが、ラムダ式を活用するためにも、ここらへんはしっかり説明しておいたほうがいいんじゃないかと思いました。
ラムダ式自体の説明は結構わかりやすかったんですけどね。
というわけで、ここに調べたことを自分なりにわかりやすくまとめておきます。

定義済みデリゲートとは?

デリゲート自体の理解は C における関数ポインタと同じだと考えればすぐに理解できました。
ただ、関数ポインタもそうですが、デリゲートの宣言というのはとても面倒です。
そのため、型パラメーターを使用し、汎用的に使用できるデリゲートが最初からいくつか定義されているようです。
これらのデリゲートのことを、定義済みデリゲートというようです。

どんなのがある?

いろいろあるようですが、よく使用するのは FuncAction だと思います。
簡単に言えば、

  • Func: 戻り値を持つメソッドのデリゲート
  • Action: 戻り値を持たないメソッドのデリゲート

となります。
どちらも引数の数に応じてオーバーロードされているようです。
詳細は参考URLを参照してください。

参考URL

2016/09/18

WPF + MVVM の勉強3:コマンドを実装する

event_note

2016/09/12

WPF + MVVM の勉強2:プロパティの変更通知を実装する

event_note

2016/09/11

WPF + MVVM の勉強1:データバインディング

event_note