Frage

Ich versuche, eine Art von Master / Detail-UI zu erstellen ein MVP-Muster. Ich habe die üblichen Verdächtigen:

interface IMainView{}
class MainView: Form, IMainView{}

interface IMainPresenter{}
class MainPresenter{}

// Numerous domain objects

Ich habe auch einen Usercontrol, die auch ein Blick auf seine eigenen MVP Triade ist:

interface ISubView{}
class SubView: UserControl, ISubView{}

interface ISubPresenter{}
class SubPresenter{}

Die MainPresenter erzeugt und Instanz des SubPresenter, die wiederum eine Instanz von SubView schafft. Mein Problem ist, die Ansichten enthalten keine Verweise auf einander oder sogar einander exist kennen. Sie kennen nur über ihre eigenen Moderatoren, aber ich mag eine Ansicht anschließen, die ein Benutzersteuerelement in einer anderen Ansicht ist, dass ein Formular ist. Ist das möglich zu tun und noch jede Ansicht der Unkenntnis voneinander halten?

Bis zu diesem Punkt aller Ansichten, die die Eigenschaften von jedem Präsentator als Systemtypen benötigen ausgesetzt, so würden die Moderatoren nicht beeinträchtigt werden, wenn eine List-Box zu einem ComboBox oder einen Radiogroup geändert. Ich möchte es halten auf diese Weise, wenn möglich, aber ich bin bereit, dieses Muster zu brechen, wenn ich keine andere Wahl haben.

Meine Gründe, dies zu tun das Mainview ist dem Benutzer eine Sammlung von Objekten präsentiert. Jedes Objekt kann eine von mehreren (mehr als 50) verschiedene Klassen sein. Alle werden eine gemeinsame Schnittstelle implementieren, aber die Benutzeroberfläche für jedes Objekt der Manipulation mit der zugrunde liegenden Klasse variiert.

Übrigens ist dies eine WinForms-Anwendung .NET 2.0 (es ist kompiliert wie C # 3.0 though)

Targeting
War es hilfreich?

Lösung

I gelöst dies durch den subpresenter einen Verweis auf seine Ansicht zu dem Haupt Moderator passieren zu müssen, die dann wieder in seine Ansicht leitet, die dann auf eine leere Platte zuzuordnet.

subView
  |
  V
subPresenter
  |
  V
mainPresenter
  |
  V
mainView

Es wird als ein einfaches altes Objekt übergibt, so weder die Moderatoren müssen Verweise auf den WinForms-Namespace enthalten. Die Hauptansicht einfach nimmt seine ein Erblasser von Usercontrol und wirft sie als solche.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top