wpf - StockTrader RI > Controller 、演示者、WTF?

标签 wpf design-patterns prism

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

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

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

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

  • 我看到 Presenter 和 Controller 不是必需的,但我想了解它们为什么在这里。谁能告诉我他们的角色 使用它们?

    最佳答案

    我有 exactly the same problem当我第一次通过 Prism 。
    Controllers基本上适用于跨越整个模块的逻辑,而 Presenters用于特定于 View 的逻辑.

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

    编辑:至于什么时候用,可以跳过Controller完全如果您不需要上述编排。最简单的应用程序只有一个:

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

  • 编辑:至于 Presenter 与 ViewModel,你的大部分逻辑都应该在 Presenter 中。将 ViewModel 视为容纳 View 的逻辑,而 Presenter 则处理与 View 交互的后果。

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

    关于wpf - StockTrader RI > Controller 、演示者、WTF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2354994/

    相关文章:

    c# - Caliburn.micro DataGridComboBoxColumn 未绑定(bind)

    c# - 绑定(bind) WPF 组合框并将其值显示到 TextBox

    wpf - 将焦点矩形应用于子元素

    c# - 报告/监控长流程进度的设计模式

    xamarin.forms - Xamarin.Forms Prism : EventAggregator from the platform projects

    WPF 绑定(bind) : Refreshing Binding after reload of combos from database

    c# - WPF 列表框两个项目并排

    Scalaz,*语法类的目的

    php - 一个 SQL 查询,还是一个循环中的多个?

    c# - 具有相同 View 名称的多个 Prism 模块