c# - Model-View-Presenter模式中的Presenter是否应该在 View 上处理多个 'UI'元素?

标签 c# wpf mvvm mvp passive-view

我正在WPF中使用Model-View-Presenter(MVP)模式实现图/流程图类型设计器。

我经常将这种模式(以及其他一些模式,例如Passive View和MVVM)视为高级架构,无法解决富UI所涉及的某些复杂性(SO巨魔在这里)。

在我的特定实例中,我有一个类似于以下模型的UI:

我已经选择对每个元素都使用Presenter对象,这需要设计器上的演示逻辑。到目前为止,这已经让我离开了以下设计师。

设计师讲师
ControlPresenter
ControlOverlayPresenter
连接演示器
ConnectionPointPresenter
叠加展示器

之所以实现这些功能,是因为它们每个都需要处理表示逻辑并将其 Action 分别传达给业务/域层,以避免膨胀(IMO)。

我看到的唯一另一种方式是,如果有一个演示者来处理所有这些演示逻辑,那看起来它很快就会失去控制。

我的问题如下:

  • 是否经常在屏幕上看到为我的每个UI元素提供的演示者(例如我正在做的),以便允许分离演示逻辑?
  • 在逻辑上创建的某些演示者是子演示者(ControlPresenter是DesignerPresenter的子演示者)这正常吗?
  • 这是否与另一个更有意义的模式保持一致?
  • 最佳答案

    我从未使用过MVP,但是我对MVVM模式非常满意,如果我将Viewer替换为Presenter一词,那么设计将完全符合我的实际意愿。

    DesignerPresenter具有ControlPresenter的ObservableCollection且ControlPresenter包含ConnectionPresenter的ObservableCollection是完全正常的。 ConnectionPresenter可能也将具有两个ConnectionPointPresenter。

    总体设计似乎还可以,但是可能还有其他类似的体系结构也适用。恕我直言,也许有太多的分离。分离连接和连接点是否有意义?

    关于c# - Model-View-Presenter模式中的Presenter是否应该在 View 上处理多个 'UI'元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25985749/

    相关文章:

    c# - 在 MVVM Cross ViewModel 之间传递简单参数

    javascript - Asp.net 将数据从代码隐藏传递到 Javascript 并调用数组

    c# - 如何编写自定义 powershell 主机

    c# - 在 html mvc C# 中访问多个 ViewModel

    c# - 如何使用 "if statement"wpf 禁用日期选择器

    c# - 如何单击 ListView 项中的按钮?

    c# - 获取独占进程句柄

    c# - 如何从 xaml 中引用 .resx 文件中的图标?

    c# - 如何实现工作空间的小 map ?

    c# - 在 WinRT Prism/MVVM 中对 ComboBox 的 SelectedValue 进行数据绑定(bind)