2010-05-20 46 views
1

在MVVM中,我將視圖模型看作是提供視圖需要綁定到的所有數據和命令的類。什麼是MVVM項目中的「其他」類型的視圖模型?

但是當我有一個數據庫實體對象,比如說一個Customer,並且我想要構建一個可以在數據網格中使用的Customer類的Shape或Flatable的類時會發生什麼情況。例如,也許這個特殊的Customer對象有一個屬性TotalOrders,它實際上是通過一個帶有Order實體集合的連接進行計算的。

我的問題是,我叫什麼這個特殊的Customer類?在其他情況下,我很想將它稱爲CustomerViewModel,但我覺得像「超載」這樣的視圖模型的概念會在MVVM項目中造成混淆。你會建議什麼?

+0

也許'CustomerListViewModel'? – 2010-05-20 05:47:45

+0

同意羅伯特,雖然也許我會說CustomerListItem或CustomerListItemViewModel(我知道,一口......) – Josh 2010-05-20 05:50:29

回答

3

我相信你原來的想法是正確的。 「視圖模型」類是暴露域模型中的數據對象的類,這些模型對象更容易被消費和管理。

退房http://en.wikipedia.org/wiki/Model_View_ViewModel

因此,CustomerOrder類是 「模式」 的部分。你描述和正在考慮調用CustomerViewModel確實是一個「視圖模型」,然後顯然你的WPF頁面/控件是「視圖」。

在命名方面......隨心所欲!但我喜歡你最初的想法CustomerViewModel。或者,可以命名它更接近視圖的一點。例如,如果頁面是CustomerOrderSummary頁面,則爲CustomerOrderSummaryViewModel

+1

+1的最後一點。這應該是答案。始終根據與其相關的視圖命名您的ViewModel。 – Amsakanna 2010-05-20 06:27:31

+0

+1。我喜歡這個。我想我會去''OrderPanelCustomerViewModel'。所以,視圖的名稱+基本對象+視圖模型的名稱。而且,由於JSprang的想法,我將把所有這些對象放在名爲DataViewModels的文件夾中。 – devuxer 2010-05-20 21:20:45

0

這很常見,其中有一些例子,你有一個List對象不是完全的視圖模型。由於您將客戶模型對象更改爲虛擬機的更多內容,您可以將其命名爲CustomerDto,或者我同意其餘的海報,CustomerViewModel(CustomerVM)也可以。

1

我們稱之爲我們的數據視圖模型。

例如,我們可能有Results.xaml將Results_ViewModel作爲視圖模型。結果頁面有一個網格,網格中的每一行都是一個Customer。但是,就像你說的,你需要一個客戶的視圖模型,這樣你就可以擁有一個像'Total Orders'一樣的屬性。在這種情況下,我們的網格將包含一個Customer_DataViewModel的集合。

+0

+1。我喜歡「DataViewModel」。看到我對Reddog的回答的評論。 – devuxer 2010-05-20 21:21:28

0

我不喜歡CustomerDto,因爲它意味着另一個概念(即表示要發送到別處的數據的東西)。我們使用術語PresentationModel,因爲它基本上是「呈現」一個不屬於模型層的屬性的基礎模型對象。對於我來說,當我實際上可以更改模型和PresentationModel以進行只讀視圖時,我使用術語ViewModel。

相關問題