2011-01-24 14 views
0

私はメインのUCでいくつかのUCからイベントを処理しようとしていますレイアウトマネージャ)。すべての子供は、子供を閉じている親に知らせるためのイベントを持っています。そのように見えます:
ParentView
|
- ChildView
|
- ChildView
|
など
Josh Smithと同様に、私はcloseコマンドにworkspace viewmodelを使用しています.ParentViewとChildViewはWorkspaceViewModel(もちろんViewModelBaseから継承しています)から継承しています。今、問題は私が子供を閉じているときです。 RequestCloseイベントは、ChildViewではなくParentViewによって呼び出されます。しかし、イベントは子供に登録されています。 WorkspaceViewModelのRequestCloseが親によって呼び出されるのではなく、親によって呼び出されるのはどうでしょうか? は、私はこのケースでは、私はMVVMパターンを破るというのが私の問題の説明に追加して、ParentViewのコードビハインドで私ChildViewを追加する必要があります。別の親UserControlによるグリッド内の複数の子UserControlのイベント処理私のWPFアプリケーション(MVVMパターン)内の

parentViewGrid.Children.Add(childView)

この場合は悲しげに、それはMVVMパターンに従うことはほとんど不可能です。理由はこちらをご覧ください:Polyline and MVVM。私はその問題を本当に解決していない。言い換えれば、この場合のMVVMパターンに従うことは、パフォーマンスと複雑さに関して、メリットかデメリットかを疑う余地があります。
あなたが私を助け、私の問題を理解できることを願っています。前もって感謝します。
カイジョシュ・スミスのよう

答えて

0

、私はcloseコマンドのためのワークスペース のviewmodelを使用していますし、 ParentViewとChildViewが継承 WorkspaceViewModelから(その もちろんのViewModelBaseからitsself 継承)。

あなたのビューはで、あなたのViewModelクラスをから継承しているはずです。何かがある場合、ビューのDataContextプロパティは、ViewModelに設定する必要があります。

はまた、私見限り、あなたはビューで表示コードを維持し、直接特定のviewmodelsから特定のViewModelのプロパティとの結合/いじりいないよう...あなたのコード parentViewGrid.Children.Add(childView)

と間違って何もありません。

最後に、これはちょうど私がnitpickyされているが、私は、なぜ標準Closingまたは少なくともCloseRequestedに変更していない、RequestClose命名されたイベントを好きではないのですか?

関連する問題