來自WPF/MVVM專家的一些建議,請參考。WPF/MVVM - 綁定子控件集合
我來自Windows窗體背景,我將一個個人項目從VB.NET移植到WPF。我開始直接重寫代碼隱藏文件中的邏輯,雖然有一個離散的數據訪問層。但是後來我發現MVVM,並且我「做得不對」,應該將邏輯抽象爲查看模型訪問數據模型。我想我已經吸收了新的範例,我的代碼背後的代碼現在(幾乎)是空的。 (另外,我購買了MVVM背後的基本原理,但由於所有路由事件和命令的「管道」等原因,我不確定'更易於測試和調試'的論點,我欣賞但我認爲有時需要模糊而不是澄清發生了什麼,但我是一個非常新手,也許會來練習。)
無論如何 - 這是什麼讓我撓了撓頭;該應用程序是潛水中心的潛水計劃/錄製工具。從邏輯上講,它就像日曆或日記應用程序一樣,需要記錄每次潛水的時間和地點以及每次潛水的人員。主屏幕類似於日記的一頁,我有一個封裝了潛水信息的用戶控件。在更改選定日期後,日記頁面將被清除並重新填充新選定日期的潛水。查看模型檢索並公開新日期的「潛水」對象(類)列表。容器是一個Stackpanel,我想清除它的子項,然後創建新的Dive用戶控件並將其添加到子控件集合中。
我的問題是 - 哪裏是適當的地方做到這一點 - 查看代碼背後或查看模型?前者是相對容易的,但在我看來打破了這種模式,但我很難以在視圖模型中實現它。序列需要是
- 用戶選擇新的日期(日曆控制)
- 處理所選擇的日期改變事件
- 清除的StackPanel子控件
- 從數據庫取回潛水爲新的日期的列表,並生成每個用戶控件
- 將用戶控件添加爲堆棧面板子控件。
我猜我在問什麼 - 是否有一種方法將子控件的集合綁定到視圖模型中的對象集合,使其動態響應 - 這是一個明智的方法嗎?
你在底部列表是100個%WinForms和0%MVVM。在嘗試重寫之前,您可能想要創建一對原型,在其中進行非常簡單的MVVM工作,作爲學習如何完成不同任務的一種方式。如果您不明白mvvm如何在wpf中工作,請勿嘗試在生產代碼中學習它。 – Will
謝謝Will,我確實承認我是MVVM新手,並且我已經開發了一些'玩具'應用程序。仍然讓我的頭繞着綁定的力量.. –
更多的玩具應用程序!我救了我所有的。有數百個不同的科目。這是學習的好方法。 – Will