股票交易者RI>控制器,演示者,WTF?

时间:2010-03-01 10:03:08

标签: wpf design-patterns prism

我目前正在学习如何通过Prism(复合WPF)项目高级使用WPF。

我观看了许多视频和示例以及演示应用程序StockTraderRI让我问这个问题:

以下各部分的确切作用是什么?

  • SomethingService:好的,这是管理数据的东西
  • SomethingView:好的,这就是显示的内容
  • SomethingPresentationModel:好的,这包含要绑定到的视图的数据和命令(相当于ViewModel)。
  • SomethingPresenter:我真的不明白它的用法
  • SomethingController:也不太明白

我看到演示者和控制器不是必需的,但我想了解他们为什么在这里。有人可以告诉我他们的角色 时使用它们吗?

2 个答案:

答案 0 :(得分:7)

当我第一次经历Prism时,我有exactly the same problem

Controllers基本上用于跨越整个模块的逻辑,而Presenters用于特定于View的逻辑。

例如,Presenter将响应导致视图中的按钮被禁用的命令。 Controller将响应导致View(和Presenter)完全更改的命令,或者可能在模块的shell中的不同区域中加载不同的View / Presenter。 / p>

编辑:至于何时使用它们,如果您不需要上面提到的编排,则可以完全跳过Controller。最简单的应用程序将只有:

  • Module:将视图/演示者注册到Region
  • Presenter:响应视图中的命令并修改ViewModel
  • ViewModel:实施INotifyPropertyChangedPresenterView之间的适配器
  • View:绑定到ViewModel并显示UI

编辑:对于Presenter与ViewModel,您的大部分逻辑都应该在Presenter中。可以将ViewModel视为视图的逻辑,但是Presenter会处理与视图交互的后果。

例如,用户点击View中的“搜索”按钮。这会触发ICommand Presenter,由Presenter处理。 ViewModel.IsSearching开始搜索并设置CanSearch属性,该属性会触发CanSearch的PropertyChanged通知。 IsSearchEnabled && !IsSearching是一个只读属性,它基于其他几个属性(例如View)。 Enabled中的“搜索”按钮的CanSearch属性绑定到{{1}}。

答案 1 :(得分:0)

在我看来,这里的控制器是指Application Controller