2010-05-10 91 views
0

在相关视图之间共享数据的良好模式是什么?视图之间共享数据的模式(MVP或MVVM)

我有一个应用程序,其中1个窗体包含许多小视图,每个视图或多或少相互独立(它们通过事件总线进行通信/交互)。每隔一段时间我需要将相同的对象传递给子视图。有时我需要将同一个对象传递给子视图,然后将子对象传递给另一个子对象本身。

什么是在父窗体(视图)中包含的所有视图之间共享此数据的好方法?

我已经看过CAB和他们的方法,并且每个“视图”都有一个“根工作项目”,这个工作项目包含包含视图之间共享“状态”的字典。

这是最好的方法吗?只是一个共享字典根视图下的所有视图都可以访问?

我现在的方法是在视图上有一个函数,允许为该视图设置对象。像

view.SetCustomer(Customer c); 

东西那么如果视图包含子视图它知道来设置它的子视图ALA:

this.childview1.SetCustomer(c); 

的应用程序是用C#3.5,使用MVP与结构图的WinForms作为IoC/DI提供商。

回答

0

好像共享数据应该在底层模型,而不是查看归属。至于这种共享是如何发生的,我会假设某些东西正在创建个体视图,并且给他们提供了他们的模型的参考?这似乎是共享使用的适当机制。

+0

你是对的,我开始用更多的DTO来批准用户界面数据,而不是直接尝试使用模型,这有助于打破共享实例的需要。 – Dovix 2010-06-18 23:40:57

+0

DTO的普及似乎正在解决大量的问题。有趣的是,经过多年的OO正统观念,我们开始意识到嘿,毕竟这些'结构'事物有一些价值!更多的东西改变... – kyoryu 2010-06-19 18:23:44

+0

是的。 DTO是一种很好的工具,可以让您直接将它发布到UI中,而不会出现额外的膨胀。太糟糕了,就像所有其他模式/方法一样,人们只是滥用它们直到成为问题。 Skillz走了很长一段路:) – Dovix 2010-06-19 23:48:33