Boost」など、さまざまなカンファレンスを企画・運営しています。BOOKS(コードジン・ブックス)は、CodeZineの連載からカットアップした、開発現場の課題解決に役立つ書籍シリーズです。Studioウィザードの2番目の画面で、デザインパターンを選びました(次の画像)。Behind]を選び、画面のコードビハインドにイベントハンドラーを書きました。そのイベントハンドラーの中でロジックを呼び出すコードを書いていましたから、画面とロジックが深く結びついていたわけです。選択肢の残りの4つはいずれも、画面(=View)とロジック(=Model)を分離するためのアーキテクチャです。Light:MVVMパターン。Basic:MVVMパターン。UWP[C#/VB]Caliburn.Micro:MVVMパターン/MVPパターン/MVCパターン。UWP/WPF[C#]Prism:MVVMパターン。Lightの例MVVMパターンというと身構えてしまう人が多いかもしれません。「画面ひとつ追加するだけで、いくつもファイルを作って、くっつけるコードを書かなきゃいけないし。コマンドを書くのも面倒だし......」。Studioのページが追加できることを。Modelのソースファイルも生成してくれます。Modelをくっつけるコードも追加してくれます。4つのどのフレームワークでも、コマンドを簡単に作れる仕掛けが用意されています。Lightを使っています。自動生成されたMainページにUIとコマンドを追加する例を紹介します。前のサンプルコードと同じように[Blankページ]を選んでMainページにしました。ModelであるMainViewModel.csも生成されます。これらに、前と同じように、トースト通知を出す機能を追加してみましょう。Modelとは、抽象化した画面です。トースト文字列の入出力(ユーザーからの入力とユーザーへの提示)、それと、(ユーザーからの指示によって)トースト通知を出すコマンドを持っています。トースト文字列の入出力は、読み書き可能で変化があったときにはPropertyChangedイベントを発行するプロパティとして表現できます。LightのRelayCommandクラスで簡単に表せます。Modelは、次のコードのようになります。}}ここで、プロパティのセッターから呼び出しているSetメソッドは、親クラスのViewModelBaseにあって、private変数に値をセットするとともにPropertyChangedイベントを発火してくれます。RelayCommandは、コンストラクター引数に、実行したい処理を渡すだけです(CanExecuteのON/OFFをしたい場合は第2引数を使います)。Modelを修正する上のコマンドの処理で呼び出しているShowToastNotificationSampleメソッドに、このような引数を取るオーバーロードはありません。前のサンプルコードと同様に、ShowToastNotificationSampleメソッドを修正します。Modelを結び付けてくれていますから、データとコマンドをコントロールにバインドするだけです。次のコードのようにUIを追加します。Margin="0,5,0,0">トースト通知</Button></StackPanel>これで完了です。上の画像のように、テキストボックスへ入力した文字列がボタンクリックでトースト通知として表示されます。StudioのおかげでMVVMパターンの実装がたったこれだけの作業で済んでしまうのです。複数画面にまたがって処理を行うような複雑なアプリを作るときは、ぜひMVVMパターンを導入しましょう。R&Dで自動車の設計をやっていた機械屋さんが、技術の進化スピードに魅かれてプログラマーに。以来30年ほど、より良いコードをどうやったら作れるか、模索の人生。くま同盟の勉強会(名古屋)で、よく喋ってたりする。モブプログラミングを取り入れて開発を効率化させるヒント9企業の7割超が「2025年の崖」を理解していないことが明らかに。モブプログラミングを取り入れて開発を効率化させるヒント9企業の7割超が「2025年の崖」を理解していないことが明らかに。モブプログラミングを取り入れて開発を効率化させるヒント9企業の7割超が「2025年の崖」を理解していないことが明らかに。5.0」がリリース新着記事一覧を見るイベント今後の予定を見るCodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。イラストの無断転載を禁じます。記載されているロゴ、システム名、製品名は各社及び商標権者の登録商標あるいは商標です。