&tag(MVVM); *目次 [#ra977997] #contents *参考情報 [#x17622ce] -[[THE MODEL-VIEW-VIEWMODEL (MVVM) DESIGN PATTERN FOR WPF:http://msdn.microsoft.com/en-us/magazine/dd419663.aspx]]…MVVMに関する原文。 -[[WPF のための MODEL-VIEW-VIEWMODEL (MVVM) デザイン パターン:http://msdn.microsoft.com/ja-jp/magazine/dd419663.aspx]]…MVVMに関する日本語訳。 -[[MVVM 勉強会資料 « ++C++; // 未確認飛行 C ブログ:http://ufcpp.wordpress.com/2010/11/12/mvvm-%e5%8b%89%e5%bc%b7%e4%bc%9a%e8%b3%87%e6%96%99/]] -[[「コマンド」と「MVVMパターン」を理解する − @IT:http://www.atmarkit.co.jp/fdotnet/chushin/introwpf_06/introwpf_06_01.html]] -[[MVVM: To Wrap or Not to Wrap? How much should the ViewModel wrap the Model? (Part 1):http://blog.alner.net/archive/2010/02/09/mvvm-to-wrap-or-not-to-wrap.aspx]] *関連ページ [#xc2acf59] -[[WPFのためのMVVMデザイン パターン]] *MVVM基本 [#lbcc1f7f] -ViewとModelの間にViewModelをはさむ。 -ViewModelがModelをラップする。View独自の状態なども管理するらしい。 -ViewModelをいちいち作るのがうざいらしい。 -実装技術が不完全でVisualStudio2010をインストールしただけでは十分ではない?ビヘイビア・トリガー・トリガーアクションの実装を可能にするにはBlend SDKの導入が必要らしい。 *ViewModel [#qf7f23f2] -INotifyPropertyChangedを継承したBaseViewModelを作成しそれを継承すると便利。 #pre{{ public class BaseViewModel :INotifyPropertyChanged { public BaseViewModel() { } public event PropertyChangedEventHandler PropertyChanged; public void NotifyPropertyChanged(string propertyName) { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } } }} *コマンド [#v8071c56] -ViewからViewModelを操作するためにコマンドという仕組みが用意されている。 -ICommandを自力で実装する方法とルーティングコマンドを使う方法がある。 **ICommandを自力で実装 [#we538752] 以下のメソッドを実装する -Executeメソッド -CanExecuteメソッド -CanExecuteChangedメソッド **ルーティングコマンドを使う [#l45a2aee] *Tips [#oede4977] **ViewModelからViewを生成する [#q89668bb] -[[MVVMにおける新Windowの表示:http://social.msdn.microsoft.com/Forums/ja-JP/wpfja/thread/f74f4b13-f337-4098-a3e5-2db1ee00be2a]] -[[MVVMでView内のコントロールをViewModelで参照したい:http://social.msdn.microsoft.com/Forums/ja-JP/wpfja/thread/ff497b52-f8f3-4c48-b4b4-f31edf56db22]] -[[MVVM利用時にShowDatailで、CenterOwnerを有効にしたい。:http://social.msdn.microsoft.com/Forums/ja-JP/wpfja/thread/65cc635c-a5bf-4c7e-956a-5c9955418304]] **ShowDaialogでOwnerを指定したい [#ifbda7a1] -[[MVVM利用時にShowDatailで、CenterOwnerを有効にしたい。:http://social.msdn.microsoft.com/Forums/ja-JP/wpfja/thread/65cc635c-a5bf-4c7e-956a-5c9955418304]]によるとCommandParameterを使えばいいらしい。 -XAML側でCommandParameterを指定すると、ICommandインターフェイスのExecute(Object parameter)にわたってくる。 **一つのModelを複数のViewModelで共有する [#f74a062c] -[[c# - MVVM pattern in wpf - one data model , multiple view models - Stack Overflow:http://stackoverflow.com/questions/3463287/mvvm-pattern-in-wpf-one-data-model-multiple-view-models]]