&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]]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS