Шаблон для обмена данными между представлениями (MVP или MVVM) - PullRequest
0 голосов
/ 10 мая 2010

Что такое хороший шаблон для обмена данными между связанными представлениями?

У меня есть приложение, в котором 1 форма содержит много маленьких представлений, каждое представление более или менее ведет себя независимо друг от друга (они взаимодействуют / взаимодействуют через шину событий). Время от времени мне нужно передавать одни и те же объекты дочерним представлениям. Иногда мне нужно, чтобы этот же объект был передан дочернему представлению, а затем ребенок передает его другому собственному дочернему объекту.

Каков хороший способ обмена этими данными между всеми представлениями, содержащимися в родительской форме (представлении)?

Я рассмотрел CAB и их подход, и у каждого "представления" есть "корневой рабочий элемент", у этого рабочего элемента есть словарь, который содержит общее "состояние" между содержащимися представлениями.

Это лучший подход? просто общий словарь все представления под корневым представлением могут получить доступ?

Мой текущий подход сейчас состоит в том, чтобы иметь функцию в представлении, которая позволяет установить объект для этого представления. Что-то вроде

view.SetCustomer(Customer c); 

тогда, если представление содержит дочернее представление, оно знает, как установить его в дочернее представление ala:

this.childview1.SetCustomer(c);

Приложение написано на C # 3.5 для winforms, использующих MVP со структурной картой в качестве поставщика IoC / DI.

Ответы [ 2 ]

0 голосов
/ 10 мая 2010

Похоже, что совместно используемые данные должны принадлежать базовой модели, а не представлению.

Что касается того, как происходит это совместное использование, я предполагаю, что что-то создает отдельные представления и дает им ссылку на их модель? Это похоже на подходящий механизм для совместного использования.

0 голосов
/ 10 мая 2010

Джош Смит и Марлон Греч используют шаблон-посредник с реализацией, которая использует слабые ссылки для предотвращения утечек памяти. Проверьте это:

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

...