0

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

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

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

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

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

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

view.SetCustomer(Customer c); 

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

this.childview1.SetCustomer(c);

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

4

2 回答 2

0

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

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

于 2010-05-10T04:23:37.057 回答
0

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

至于这种共享是如何发生的,我假设某些东西正在创建单独的视图,并为它们提供对其模型的引用?这似乎是共享使用的适当机制。

于 2010-05-10T04:35:11.320 回答