仍試圖找到更復雜的MVVM場景的好例子...在一個視圖中的視圖模型/實體或多個視圖模型的多個視圖?
假設我有一個viewmodel - PlayersViewModel有一個球員的集合。在一個視圖中,我看到了玩家的集合並添加/編輯/刪除。
另一種觀點是球隊,我在那裏分配給玩家團隊。所以我有另一個viewmodel - TeamsViewModel。這個視圖還需要一系列玩家。如何讓兩個播放器列表保持同步,以便在兩個視圖中顯示更改?
我看到了一些選擇:
- 添加到PlayersViewModel參考我的團隊視圖(以及以TeamsViewModel參考),並在這兩種觀點
- 有兩臺使用PlayersViewModel.Players集合引用相同的底層集合實例(在某種程度上)
- 不同集合創建像Player.All播放器模型,返回集合的靜態屬性和通過的ViewModels Player.Add(播放器),Player.Delete等管理玩家而不是PlayersViewModel.AddPlayer(播放器)?
我傾向於#1,並使用應用程序範圍的資源,因此團隊視圖可以調用兩個視圖模型。但是,如何在我的TeamsViewModel的PlayersViewModel.Players集合中使用選定的播放器來添加它們?
請幫忙!
感謝Joel,看來我正在朝着這個方向前進,並且將viewmodels映射到我的視圖上。我的視圖模型目前非常大,所以看起來我需要與我的視圖模型和實體框架對象一起使用另一項服務 - 就像一個智能數據存儲庫,其中包含像當前的Players集合一樣的東西。儘管EF在這裏看起來似乎有些翻了一番,EF應該爲我做些什麼。 – DaveO 2011-03-24 08:43:19
考慮添加您的ViewModel訪問它所需類的服務層。該服務可以使用對EF的存儲庫模式,您可以使用DI設置它或使用上面討論的其他方法之一。你的虛擬機不應該做所有的EF工作,它應該與那個層進行通信。 – 2011-03-24 14:23:03