如何向演示者发出有关复杂模型深层变化的信号?

时间:2013-02-15 13:43:41

标签: c# mvp

我们正在使用MVP,但问题本身并不一定是MVP特定的。基本上,演示者需要知道模型是否发生变化,以便他们可以处理并反映他们视图的变化。

使用模型中的事件很容易,但模型也包含其他模型 - 它们可以通过不知道根模型或任何演示者的演示者+视图进行修改。 p>

以下是此类模型的简化示例:

class Document
{
    Header header;
    List<Paragraph> paragraphs;
    Footer footer;
}

假设有两个演示者和视图可以创建文档的表示形式; DocumentEditPresenter / -View和DocumentPreviewPresenter / -View。

然后会有文件所包含的模型; HeaderPresenter / -View,ParagraphPresenter / -View和FooterPresenter / -View。

DocumentEditPresenter会在从视图中获取事件后为段落创建ParagraphPresenter / -View。 然后,ParagraphPresenter会修改段落 - DocumentEditPresenter和DocumentPreviewPresenter都应该获得某种信号来刷新。

我知道一个解决方案是所有模型都包含对其父项的引用和/或关于每个可能的修改的事件,但它看起来过于复杂并且会使编辑模型容易出错。该模型也应该是可序列化的。

类似于WPF的路由事件将是完美的。

1 个答案:

答案 0 :(得分:0)

如果你的模特很深,那么听“来自深层次”的活动会很痛苦。

我会将管理员的代码组织起来,就像外观一样,这样模型中的任何修改,甚至深度,都应该通过其中一个管理器。 然后,我会向经理提出一个事件,主持人会听取它。

您的活动可能只是“ModelChanged”触发刷新。