2010-08-30 130 views
3

嗨,我對WPF來說很新。我喜歡MVVM(Model-View-ViewModel)模式。我目前的項目有以下類型的文件/名稱空間結構:什麼是推薦的WPF應用程序項目結構?

Clients 
    Controls 
     ClientNameControl.xaml 
     ClientSurnameControl.xaml 
    Views 
     ClientCapture.xaml 
    Models 
     Client.cs 
    ViewModels 
     ClientViewModel.cs 

等等。每個領域的客體,產品等都有上述結構。控件用於組合視圖,非常通用的控件分解爲單獨的控制項目並在項目中引用。我的問題是如果這是一個有用的結構? MVVM的所有的例子似乎採取如下方法對文件/命名空間層次:

ViewModels 
    ClientViewModel.cs 
    ProductViewModel.cs 
    Models 
    Clients.cs 
    Products.cs 
    Views 
    CliewntView 
    ProductView 

任何意見,將不勝感激。在此先感謝:)

更新:我一直在環顧四周,下面的鏈接提供了有用的信息。我將以更傳統的方式來構建我的項目。

+2

我覺得這篇文章可能因爲主觀而被封閉。這個問題沒有真正的答案。我認爲如果它適合你,你的結構會很有用。如果出現情況不符合某個特定域對象的控件/視圖/視圖模型,則可能會遇到麻煩。 – Peter 2010-08-30 08:36:24

回答

2

我們爲View和View模型創建了不同的項目。在大型項目的情況下,它使事情更容易維護。目錄我們所做的是 -

- ViewsRoot 
    + Base 
    + Controls 
    + Documentation 
    + Forms(Windows) 
    + Reports 
    + Resources 
    + Themes 
    + Utilities 
    App.xaml 

- ViewModelsRoot 
    + Collection 
    + Commands 
    + Converters 
    + Resources 
    + TemplateSelectors 
    + ViewModels 
    + Views (Interfaces for views) 
    Constants.cs 
    Utility.cs 

也看看更多的一些信息,這太問題。有關WPF項目結構 - Recommended WPF Project Structure?

+0

我知道,這是一個古老的問題,但爲什麼你需要ViewModelsRoot中的視圖?通常(如果您使用MVVM)將VM作爲datacontext綁定到視圖。所以虛擬機不需要知道什麼關於視圖?! – basti 2012-09-14 06:15:17

+0

@chiffre這是用來防止你想要在你的視圖中調用某些代碼的方法(在虛擬機中無法完成的用戶界面特定功能);你可能不會稱之爲完美的MVVM,但在某些情況下它可以工作。如果我沒有記錯,我們用它來顯示消息(錯誤/警告/信息)給用戶使用自定義messageBox(只有ViewsRoot)有參考。 – akjoshi 2012-09-14 12:47:46

+0

雖然之後我還沒有使用過這種方法,但在當時效果很好;從那個時候相關的帖子 - http://stackoverflow.com/questions/3670629/should-a-viewmodel-in-mvvm-reference-the-view?rq=1 – akjoshi 2012-09-14 13:00:26

相關問題