私は、MVVMパターンを厳密に守りながら、メモリゲームを作成しようとしています。今私は実行時にビューを作成することに問題があります。C#MVVM動的にビューを作成する方法
- Modelプロジェクト
- -MemoryCardModel30
- -card
- のViewModelプロジェクト
- -MainWindowViewModel
- -CardViewModel:
私は、次のプロジェクト構造を作成しました
- Viewプロジェクト
- -CardView
- てstartApplicationプロジェクト
- -MainWindowView
次のように依存関係は次のとおりです。てstartApplicationプロジェクト - > Viewプロジェクト - >のViewModelプロジェクト - >モデルプロジェクト
MainWindowViewのボタンをクリックすると、そのボタンのICommand機能MainWindowViewModel内のModelCodeModel30インスタンスがModelプロジェクトからロードされます。 MemoryCardModel30インスタンス内の各Cardに対して、CardViewModelが作成されます。
CardViewインスタンスを作成する方法、DataViewextをCardViewModelsにリンクする方法、およびCardViewをMainWindowViewに配置/割り当てる方法について教えてください。 ViewModelプロジェクトはViewプロジェクトに依存しないため、ビューを作成できません(循環依存を作成してパターンを分割します)。 MVVMパターンに従ってこの問題を解決するには?
P .:カードビューは、xとyの位置によって正確に配置する必要があります。対応するCardViewModelに行くべき複雑な計算が必要になります。グリッドのようないくつかの基本的なレイアウトは十分ではないと私は思います。
フレームワークを使用していて、アプローチは「モデルファースト」か「ビューファースト」ですか?また、WrapPanelを使用して、必要な操作を行うこともできます。https://msdn.microsoft.com/en-us/library/system.windows.controls.wrappanel(v=vs.110).aspx –
MV ** P ** VMを私の仕事で使う理由は、モデルをビューにリンクして表示することは、MVVMにうまく収まる仕事ではなく、プレゼンターの仕事です。 –
@BerinLoritschいいえ、現時点ではフレームワークを使用していません。私は最初からパターンを学びたかったのです。私は、EntityFrameworkのコンテキストでは「モデル・ファースト」に慣れていますが、MVVMではそうではありません。しかし、この場合は、ViewModelからモデルを作成し、ビューを最後に開始しました。 – user2653422