Я пытаюсь использовать MVP в WinForms и не понимаю, как лучше справляться с координацией между дочерними представлениями.
Например, у меня есть родительское представление, которое имеет два дочерних представления. События в одном дочернем представлении должны вызывать действие, которое будет предпринято вторым дочерним представлением.
Должен ли родительский вид управлять этим напрямую? Похоже, что я обхожу шаблон MVP, делая это.
Или дочерние представления должны принимать друг друга в качестве параметров конструктора? В этом случае, когда событие было запущено первым дочерним представлением, второе дочернее представление получит событие и затем уведомит своего докладчика о том, что что-то произошло? Затем докладчик должен получить данные из первого дочернего представления (о котором он даже не знает), чтобы сообщить второму дочернему представлению, что делать. Это кажется запутанным, поэтому я чувствую, что что-то упустил.
Вот некоторый псевдокод для ситуации:
public class ParentView : UserControl, IParentView
{
private ChildViewOne childViewOne;
private ChildViewTwo childViewTwo;
private ParentViewPresenter presenter;
private RegisterEvents()
{
childViewOne.EventOccured += new EventHandler(HandleEvent);
}
private void HandleEvent()
{
childViewTwo.DoSomething();
}
}