2011-11-15 76 views
1

我正在開發一個Windows 8 metro風格的應用程序,使用開發人員預覽版爲大學的一個學術項目。我們必須使用MVVM模式。Metro風格的應用程序UI設計:Pages vs場景

在主頁面中,我們有一個帶按鈕的metro風格主菜單。根據MVVM模式,每個按鈕都會導致一個應用程序工具(即「顯示我的庫」,「顯示收藏夾」,...),它們應該屬於不同的視圖。

在您看來,我們應該爲每個視圖創建一個新的「城市風格的頁面」,或期望每個use case刷新主頁面的「場景」,就像許多示例應用程序中的那樣? 換句話說,使用MVVM應該在'普通老式WPF Windows'和'全新的metro風格頁面'之間進行1:1匹配?

回答

2

MVVM的事情是,除了事實是用戶可以查看ViewModel數據的方式之外,沒有關於什麼構成View的硬性規則。

視圖不一定是一個頁面,但可以是一個控件。因此,如果您願意,您可以擁有一個頁面,在該頁面上顯示許多View控件。通常我有我的視圖作爲控件,即使它們是頁面上顯示的唯一項目,因爲它允許我在以後更容易地將它們嵌入到其他頁面中。

MVVM模式純粹是將UI與業務/代碼邏輯分開的一種手段。 ViewModel類不關心數據是如何顯示的,它只是提供綁定點,屬性等,用於顯示數據和觸發代碼函數的點。

有些人會堅持認爲代碼背後沒有任何代碼,但我認爲需要更實用的方法。控制視圖的視覺方面的代碼是很好的,並且當看起來是商業邏輯侵入時存在occaisions。

例如,在後面的代碼中需要實現拖放功能代碼。這實際上只是一個視覺方面,所以沒有問題,但如果業務模型規定只有某些項目或最大數量的項目被放置在給定的位置,那麼ViewModel將需要提供一些數據綁定點,View可以用來實現這一點。通過這樣做,您可以爭辯說現在的View代碼實現了一些業務邏輯。

回到原來的問題。我會嘗試實現這個應用程序,使其具有Windows 8 metro-stryle應用程序的預期功能。這顯然會影響你如何編寫代碼,但在這樣做時仍然可以堅持使用MVVM模式。

+0

+1爲「實用方法」。你是對的,這不是一個哲學問題...... – dave

相關問題