7標準のApplicationBarの弱点を補完するための別な実装をいろいろと調べていたが、残念なことに満足に使えるものは見つからなかった。MVVMあとは必要なイベント発生時にこれらのコマンドを明示的に実行すればOKだ。次は実際の画面と組合わせて処理を完成させてみよう。今回は今までの仕上げとして、実際に画面を用意して設定値をロード/セーブしてみよう。MVVMさて、設定画面の設定値をロード/セーブする処理だが昨日はViewModelに直接組込んで使う例を考えてみた。今日はViewModelには組込まず、コマンドとして実装することを考えてみよう。MVVMとシンプルな構成。あとはAppSettingsクラスを好きな画面のコントロールにデータバインドするだけと簡単だ。殆どがルーティーンなので、これも他のコード同様にもう少しスマートに書けないかを考えてみよう。MVVM環境や各種諸元値のオプションを設定する画面はモバイルアプリケーションでよく使われる。MVVM提供されているリソースを上書きしてデータテンプレートを使ってかなり面倒なことをやるのかな、と思ったのだが存外簡単だった。状態二値である"On"と"Off"をキーに持つリソースを用意する。MVVM先日公開したNotifyOnValidationErrorBehaviorクラスだが、複数のコントロールがそれぞれ違うBrushを使っていると対応できない。(テストしていないことがばればれだ)なので、Controlに対応するBrushを格納する辞書を利用するように修正してみた。MVVM以下はまだメモ。後でもう少しちゃんとまとめる。Blend4せっかくなのでよく使いそうなビヘイビアをもう一つ書いてみた。Blend4Blend4でプログラミングできる部品として使うビヘイビア。組込みのものを使うのは勿論良いのだが、作るのが非常に簡単なので自分の欲しいビヘイビアを思いついたらばんばん作って良いと思う。以下、ビヘイビアを作る手順。MVVMさて属性ベースのバリデーションとだが、バリデーションに使う属性はSystem.ComponentModel.DataAnnotationsネームスペース下に既に存在しており、基本的なバリデーションはこれを利用することで殆ど事足りてしまうだろう。Templateと属性のおかげで、簡単な属性をメタデータとして与えることでフル装備のViewModelを簡単に自動生成できるようになった。EventTriggerとそのアクションであるInvokeCommandActionを使って実装した。以下のようなよくある処理は同様の方法で可能だろうか。Blent4System.Windows.MessageBoxはXAMLではサポートしていないので通常はコードビハインドから書く。MVVMMVVMに直接は関係ないかもしれないが、GUIアプリケーションを書く場合にはスマートなバリデーションは絶対に必要だ。MVVMさて少し空いてしまったが、残った処理をテンプレートに実装していこう。前回はクラスの定義部までを生成した。MVVM前回は属性(アノテーション)の定義が出来たので、話をテンプレートに戻そう。次に行うのはこの属性をマーカとして使い、生成対象のクラスを見つけることだ。T4さて、ViewModelの自動生成の続きだ。おさらいになるが、自動生成するViewModelは対象のネームスペース、クラスを決定しなくてはならない。生成するプロパティ(名前、型、デフォルト値)を決めたい。TemplateによるViewModelの生成のためのジェネレータを作成していく。APTとほぼ同様のことができることが解ったので、早速プロセッサ(というかジェネレータ)を作ることにしよう。実装の手順は以下のようになるだろう。Tool)を利用して自動生成するエントリを書いたことがある。MVVMSilverlight4の制限はあるものの、MVVMの実装において重要な責務を担うコマンドバインディングが実現できることが解ったので、次はデータバインディングが実現できるかどうか検証してみよう。MVVMWPF/SilverlightはデータバインディングによりViewとViewModel、ViewModelとModel、互いの疎結合を保ったままでデータの同期を可能にしている。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。