我目前正在学习如何通过Prism(复合WPF)项目高级使用WPF。
我观看了许多视频和示例以及演示应用程序StockTraderRI让我问这个问题:
以下各部分的确切作用是什么?
我看到演示者和控制器不是必需的,但我想了解他们为什么在这里。有人可以告诉我他们的角色和 时使用它们吗?
答案 0 :(得分:7)
当我第一次经历Prism时,我有exactly the same problem。
Controllers
基本上用于跨越整个模块的逻辑,而Presenters
用于特定于View
的逻辑。
例如,Presenter
将响应导致视图中的按钮被禁用的命令。 Controller
将响应导致View
(和Presenter
)完全更改的命令,或者可能在模块的shell中的不同区域中加载不同的View / Presenter。 / p>
编辑:至于何时使用它们,如果您不需要上面提到的编排,则可以完全跳过Controller
。最简单的应用程序将只有:
Module
:将视图/演示者注册到Region
Presenter
:响应视图中的命令并修改ViewModel
。ViewModel
:实施INotifyPropertyChanged
的Presenter
和View
之间的适配器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