2016-05-01 20 views
-1

私は知って欲しいMVVMパターンに違反しているのであれば、パラメータを介して渡されたコールバックメソッドを呼び出すcommand executeメソッドにロジックを入れますか?例えばMVVMを使用しているときにWPFコマンド内でコールバックすることはできますか?

public void MyCommandExecute(object arg) 
{ 
if(arg is System.Action) 
    { 
     (arg as System.Action)(); //this action will do any logic about the view 
    } 
} 
+0

あなたの質問にいくつかのコードを追加してください。しかし、あなたのコールバックがinotifypropertychangedを実装でき、ビューを更新できる場合は、そのようには聞こえません。 –

+0

@StuartSmithコードが追加されました。 –

+0

コールバックをコマンドパラメータとして渡す代わりに、ビューがバインドできるプロパティ(変更通知あり)が必要です。コマンド実行メソッドは、そのプロパティを設定するだけです。 – Clemens

答えて

2

実際MVVMは、ビジネスロジックとデザインのロジックを分離しています。主にプロパティを定義するデータとすべてをバインドするためのビューモデルを使用します。直接ビュー関連のコードは、ビュー自体で定義することができます。たとえば、ビュー内のボタンを閉じて定義し、ユーザがクリックしたときにウィンドウを閉じるようにします。これは、ビューモデルでビューモデルを使用するのではなく、ビュー自体で定義することができます。どちらの方法も正しいです。コールバックは可能です。あなたはあなたの視点でそれを直接行うことができます。それが私の言うことです。

関連する問題