2016-01-06 109 views
4

我正在使用WPF & Caliburn MVVM創建桌面應用程序。在我的「意見」的目錄,我有遵循此模式的幾個文件:什麼應該在[名稱] View.xaml.cs文件?

ExampleView.xaml < =這是實際的UI設計...

ExampleView.xaml.cs < =發生的事情嗎?

然後我也有每個視圖的ViewModel。

有人可以解釋ExampleViewModel.cs應該怎麼做,以及ExampleView.xaml.cs應該怎麼做?它看起來像我的ViewModel繼承自「屏幕」,其中我的ExampleView.xaml.cs繼承自「窗口」。

謝謝!

回答

1

這就是您的「Codebehind」視圖。許多人使用代碼隱藏與他們的觀點進行交互。但是,許多人更喜歡使用視圖模型的稱爲MVVM的解耦方法。 MVVM體系結構更易於進行單元測試,並且更易於代碼重用。

因此,總之,ExampleView.xaml.cs用於與視圖上的控件進行交互。

1

那麼,您的觀點可以從WindowUserControl或其他WPF類繼承。在MVVM中,視圖是用戶界面,視圖模型是暴露公共屬性和命令的視圖的抽象。 MVVM不是MVC模式的控制器,而是MVP模式的主持人,MVVM有一個活頁夾。在視圖模型中,資料夾介於視圖和資料資料夾之間的通訊。

但是您的視圖可以包含不依賴於ViewModel數據的UI邏輯。這個邏輯可以作爲View的(和內部控件的)事件處理程序添加到[Name] View.xaml.cs文件中,例如OnLoad,OnResize。它叫Code behind

0

我剛剛寫了一個使用MVVMLight Nuget的WPF應用程序,所有的[views] .aspx.cs都只有自動生成的代碼。我不需要在視圖代碼中放置任何東西,因爲它在我的視圖模型中。我還將一些Web應用程序和幾個Windows 8商店應用程序轉換爲MVVM,並幾乎完全消除了後面視圖代碼中的所有代碼。

我唯一把事情放在視圖代碼背後的可能是在非常孤立的情況下實例化一個視圖模型以與該視圖一起進行。

關於是否有零代碼最好遵循MVVM或在代碼背後有一些代碼是好的,有很多爭論。個人喜好和基於工作量,複雜度,時間表等。

相關問題