我試圖創建一個內存遊戲,同時嚴格遵循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