用于在视图之间共享数据的模式(MVP或MVVM)

时间:2010-05-10 03:59:27

标签: c# mvp composition

在相关视图之间共享数据的好模式是什么?

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

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

我已经研究过CAB及其方法,每个“视图”都有一个“根工作项”,这个工作项有字典,其中包含所包含视图之间的共享“状态”。

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

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

这样的东西
view.SetCustomer(Customer c); 

然后如果视图包含子视图,它知道在子视图ala上设置它:

this.childview1.SetCustomer(c);

该应用程序是用C#3.5编写的,用于使用MVP和结构图作为IoC / DI提供程序的winforms。

2 个答案:

答案 0 :(得分:0)

Josh Smith和Marlon Grech使用中介模式和一个使用弱引用来防止内存泄漏的实现。看看这个:

http://marlongrech.wordpress.com/2009/04/16/mediator-v2-for-mvvm-wpf-and-silverlight-applications/

答案 1 :(得分:0)

似乎共享数据应该属于底层模型,而不是View。

至于如何进行共享,我假设有些东西正在创建各个视图,并为他们提供了对其模型的引用?这似乎是共享使用的适当机制。