在相关视图之间共享数据的好模式是什么?
我有一个应用程序,其中1个表单包含许多小视图,每个视图或多或少地相互独立(它们通过事件总线进行通信/交互)。我经常需要将相同的对象传递给子视图。有时我需要将这个相同的对象传递给子视图,然后孩子将它传递给另一个子本身包含。
在父表单(视图)中包含的所有视图之间共享此数据的好方法是什么?
我已经研究过CAB及其方法,每个“视图”都有一个“根工作项”,这个工作项有字典,其中包含所包含视图之间的共享“状态”。
这是最好的方法吗?只是一个共享字典根视图下的所有视图都可以访问?
我目前的方法是在视图上设置一个函数,允许用户为该视图设置对象。像
这样的东西view.SetCustomer(Customer c);
然后如果视图包含子视图,它知道在子视图ala上设置它:
this.childview1.SetCustomer(c);
该应用程序是用C#3.5编写的,用于使用MVP和结构图作为IoC / DI提供程序的winforms。
答案 0 :(得分:0)
Josh Smith和Marlon Grech使用中介模式和一个使用弱引用来防止内存泄漏的实现。看看这个:
http://marlongrech.wordpress.com/2009/04/16/mediator-v2-for-mvvm-wpf-and-silverlight-applications/
答案 1 :(得分:0)
似乎共享数据应该属于底层模型,而不是View。
至于如何进行共享,我假设有些东西正在创建各个视图,并为他们提供了对其模型的引用?这似乎是共享使用的适当机制。