2010-03-01 83 views
5

我目前正在學習如何通過Prism(Composite WPF)項目使WPF的高級用法。StockTrader RI>控制器,演示者,WTF?

我看很多視頻和實例演示應用StockTraderRI讓我問這個問題:

什麼是以下各部分的確切作用?

  • SomethingService:好吧,這是後話來管理數據
  • SomethingView:好吧,這是電子錢包顯示的
  • SomethingPresentationModel:好吧,這包含了數據和命令的視圖相當於綁定(到視圖模型)。
  • SomethingPresenter:我真的不知道這是使用
  • SomethingController:不明白太

我看到了一個演示和控制器是沒有必要的,但我想明白爲什麼他們在這裏。有人能告訴我他們的角色何時使用它們?

+1

我同意,事情混淆再用混亂。 – Pierreten 2010-03-05 00:57:23

回答

7

我第一次遇到棱鏡時有exactly the same problem

Controllers基本上用於跨越整個模塊的邏輯,而Presenters用於特定於View的邏輯。

例如,Presenter會響應導致視圖中的按鈕被禁用的命令。 A Controller將響應導致View(和Presenter)完全更改的命令,或者可能在模塊外殼的不同區域中加載不同的View/Presenter。

編輯:至於什麼時候使用它們,如果你不需要上面提到的編排,你可以完全跳過Controller。最簡單的應用程序將只具有:

  • Module:註冊視圖/主持人到Region
  • Presenter:響應從視圖的命令,並修改ViewModel
  • ViewModel:適配器PresenterView實現INotifyPropertyChanged
  • View之間:結合ViewModel並顯示UI

編輯:作爲主講人VS視圖模型,大部分的邏輯應該是在你的演示。將您的ViewModel視爲您的視圖的邏輯,但Presenter會處理與視圖交互的後果。

例如,用戶點擊您的View中的「搜索」按鈕。這會觸發ICommand,由您的Presenter處理。Presenter開始搜索並設置ViewModel.IsSearching屬性,該屬性觸發CanSearch的PropertyChanged通知。 CanSearch是基於其他幾個屬性的只讀屬性(例如,IsSearchEnabled && !IsSearching)。 View中的「搜索」按鈕的Enabled屬性綁定到CanSearch

+0

哦,所以這只是當前視圖(Presenter)中發生的事情和模塊(Controller)中發生的事情之間的分離。 我實際上在ViewModel中做了所有的邏輯東西。這是錯誤的還是這只是一個戰略選擇? – SandRock 2010-03-01 10:17:50

+0

'棱鏡'只是一個建議。話雖如此,我已經用一些VM vs Presenter信息更新了我的答案。 – 2010-03-01 10:21:50

+0

太好了,現在一切都清楚了。我現在就試試這個。 謝謝你的時間:) – SandRock 2010-03-01 10:31:07

0

在這裏我看來,控制器是指Application Controller

+0

如果只有一個模塊,這對於棱鏡是正確的。 – 2010-03-01 10:34:18

相關問題