我试图创建一个内存游戏,同时严格遵循MVVM模式来学习如何使用它。现在我在运行时创建视图时遇到问题。C#MVVM如何动态创建视图
我创建了以下项目结构:
- 示范项目
- -MemoryCardModel30
- - 卡片
- 视图模型项目
- -MainWindowViewModel
- -CardViewModel
- 查看项目
- -CardView
- StartApplication项目
- -MainWindowView
的依赖关系如下:StartApplication项目 - >查看项目 - >视图模型项目 - >模型项目
单击MainWindowView上的按钮后,该按钮的ICommand函数在MainWindowViewModel内将从Model项目加载一个MemoryCardModel30实例。对于MemoryCardModel30实例中的每个卡,将创建一个CardViewModel。
现在我要面对的问题:如何创建CardView实例,如何将其DataContexts链接到CardViewModels以及如何在MainWindowView上安排/分配CardViews? ViewModel项目不能创建视图,因为它对View项目没有依赖性(会创建一个循环依赖关系并打破该模式)。如何解决这个问题,同时遵循MVVM模式?
P.S .:卡片视图需要准确定位x和y pos。这将需要一些复杂的计算,应该去相应的CardViewModel。所以我认为一些基本的布局如grid不够用。
您是否在使用框架,并且您的方法是“模型优先”还是“先查看”?此外,你可能能够得到一个WrapPanel来做你想做的事...... https://msdn.microsoft.com/en-us/library/system.windows.controls.wrappanel(v=vs.110).aspx –
这种事情就是为什么我们在我的工作中使用MV ** P ** VM:将模型链接到视图,然后显示这些视图不是一个很适合MVVM的工作,但是是一个Presenter工作 –
@BerinLoritsch不,我目前没有使用任何框架。我想从一开始就学习这种模式。我只是在EntityFramework的上下文中“模型第一”而不熟悉MVVM。然而,在这种情况下,我开始使用ViewModel,然后是模型并保存视图。 – user2653422