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

San*_*ock 5 wpf design-patterns prism

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

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

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

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

我看到没有必要使用演示者和控制器,但我想了解他们为什么在这里.有人可以告诉我他们的角色以及何时使用它们?

Ric*_*lay 7

当我第一次经历Prism时,我遇到了完全相同的问题.

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

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

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

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

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

例如,用户单击您的"搜索"按钮View.这触发了一个ICommand由你的处理Presenter.在Presenter开始搜索并设置ViewModel.IsSearching属性,它触发了的PropertyChanged通知CanSearch.CanSearch是一个只读属性,基于其他几个属性(例如IsSearchEnabled && !IsSearching).其中的"搜索"按钮View具有其Enabled属性绑定CanSearch.

  • 是的超载条款.:P (3认同)