2012-03-07 19 views
0

エンティティを表示するために編集可能なグリッドを使用するMVVMアプリケーションの良い例を探しています。私はすでに問題なく動作していたエンティティのObservableCollectionにグリッドをバインドしようとしました。私がしたかったのは、モデルに検証エラーがあるときに無効にする方法で保存ボタンをバインドすることだけでした。編集可能なグリッドMVVMエンティティフレームワークのサンプルアプリケーション

答えて

1

たぶんそのような何か:

class MyCustomCommand : ICommand 
    { 
     public MyCustomCommand(ObservableCollection<object> collection) 
     { 
      collection.CollectionChanged += (s, e) => 
       { 
        if (CanExecuteChanged != null) 
         CanExecuteChanged(this, new EventArgs()); 
       }; 
     } 

     public bool CanExecute(object parameter) 
     { 
      return your condition; 
     } 

     public event EventHandler CanExecuteChanged; 

     public void Execute(object parameter) 
     { 
      ... 
     } 
    } 
+0

あなたの答えをありがとう。これを行うためにCaliburn.Microを使用したいのであれば、この動作を実現するためのよりよい方法がありますか?申し訳ありませんが、この質問は理にかなっていませんが、私はMVVM/Caliburnを使い始めて、そのスタイルに慣れてみてください。 – Eggi

+1

私はcaliburnマイクロフレームワークを知らなかったが、彼らはこのタスクを達成するためにアクションを使用しているようだ:http://devlicio.us/blogs/rob_eisenberg/archive/2010/07/17/caliburn-micro-soup-to-nuts- pt-3-all-about-actions.aspx – Jonas

+0

Caliburn MicroはICommandの必要性を排除します。 –

1

ボタンのCommandプロパティをビューモデルのICommandプロパティにバインドする必要があります。 CanExecuteメソッドでは、検証エラーがあるかどうかを確認できます。はいの場合はFalseを返し、そうでない場合はTrueを返します。ボタンは自動的に有効/無効になります。

+0

私は現在のObservableCollection内のすべてのエンティティを持っています。だから私の質問は、このコレクション内の何かが変更されたときに呼び出されるボタンを無効にするメソッドを持つことができますか?また、グリッドをバインドするのも良い考えです。 – Eggi

+0

何かが変更されたときにボタンを無効にする必要はありませんが、何らかの検証エラーが発生したときにボタンを無効にする必要があります。 Buttonコマンドをバインドし、それに応じてCanExecuteメソッドを実装するだけです。 – gaurawerma

関連する問題