2011-11-11 7 views
1

私は、モジュール式のSilverlightアプリケーションでPRISMとMVVMを使用しています。私はまだMVVMファッションでPRMSとサンプルが提供する2つの方法で相互作用を行う適切な方法を理解しようとしていますが、私はさまざまな理由で好きなものではありません。MVVMパターンでカスタムコントロールまたはUserControlのメソッドを呼び出す適切な方法はありますか?

方法1(PRISM):異なるリージョンアダプターを使用する。基本的には、コンテナに添付プロパティがあり、ビューを領域に注入します。これはほぼ100%働いていますが、この方法が否定的であるということは結果を伝える良い方法がないということです。私はEventAggregatorを使用することができますが、インタラクションが完了したときにデータでイベントを発生させることが正しいとは感じません。

方法2(PRISM):InteractionRequestを使用する。トリガーアクションと、各ビューで繰り返さなければならない大きなボイラープレートXAMLがあります。

自分のコントロールを作成する必要がある自分自身で何かを作成することを考えていますが、これは各ビューに追加する必要がありますが、XAMLとこのコントロールをバインドできるIPopupServiceの種類はほとんどありません。私はPopupServiceを介して必要なすべてのデータを渡すことができますが、実際にPOPUPの動作を起こすためには - 私はこのコントロールのメソッドを呼び出す必要がありますMVVMで崩れて

私はMVVMのメソッドVMを認識していませんか?

+1

を私が働く任意の明白な方法として 'PROPER' を定義。 –

答えて

1

ビューにはオプションはありませんが、VMにバインドされているため、VMを意識してください。

実際には、何か他のことをするUIと設計/テスト/デバッグの実装とやり取りする実行時の実装で、ある種のサービスを定義することができます。 Viewレイヤーがどのように解釈するかを決定するいくつかのイベントをVMレイヤーに公開することもできます。

0

まず、他人が消費するUserControlを開発する場合、MVVMは良い選択ではないと思います。見た目のないコントロールは、あなたが本当に開発しなければならないものです。 Jeremiah Morrillにはこの件に関するブログ記事があります。

これで、デフォルトのパブリックコンストラクタがある場合は、XAMLでdatacontextを設定できます。

インサイドControlView.xaml置く:

<UserControl.DataContext> 
    <local:ControlViewModel /> 
</UserControl.DataContext> 
関連する問題