Laden von Unteransichten mit MVP

8

Ich habe in den letzten paar Tagen mit dem MVP-Muster herumgewirbelt, wobei ich Winforms benutzt habe, es gibt nur eine Sache, bei der ich nicht sicher bin, wie ich es machen soll. Wie erstellen Sie ein Teilformular aus einer anderen Ansicht? Wäre das eine gültige Option?

%Vor%

Ich bin hauptsächlich daran interessiert, wie Sie ein Unterformular mit diesem Muster laden und wie Sie eine ID von der ersten Seite an das Unterformular übergeben würden.

Danke.

    
Nathan W 30.06.2009, 11:05
quelle

3 Antworten

8

Ссылка

Der obige Link ist der nächste, den ich gesehen habe, um dies zu beantworten. Die meisten Lösungsversuche lassen etwas zu wünschen übrig.

    
Kenneth Cochran 30.06.2009, 20:23
quelle
2

Sehen Sie sich diese andere SO-Frage an . Obwohl es sich um WPF und nicht um WinForms handelt, scheint das Problem das gleiche zu sein.

Im Wesentlichen halte ich die Notwendigkeit, einem Hilfsfenster einen Dienst anzuzeigen (Sie könnten es den WindowsService oder DialogService oder etwas Ähnliches nennen). Das hilft Ihnen, die Dinge ins rechte Licht zu rücken, denn sobald Sie das bemerken, wird Dependency Injection zur Antwort.

In Ihrer Antwort modellieren Sie dies mit Ereignissen, aber ich bevorzuge ein expliziteres Modell, bei dem Sie die ShowDialog-Methode eines DialogServices aufrufen. Die Mechanik jedes Ansatzes ist jedoch nicht so unterschiedlich.

    
Mark Seemann 04.07.2009 19:36
quelle
1

Ein paar Kommentare dazu

Zuerst das

%Vor%

Was passiert, wenn Sie sich dafür entscheiden, ThirdForm für SecondForm zu ersetzen? Sie müssen jeden Aufruf von newform = new SecondForm finden und die Änderung vornehmen.

Stattdessen sollten Sie die Erstellung der SecondForm in einem Befehlsobjekt umbrechen

%Vor%

Dann hier und jeder andere Ort bringt zweite Form mit dieser Syntax

%Vor%

Wenn Sie ein komplett neues Formular für SecondForm austauschen möchten, haben Sie nur einen Platz, an den Sie gehen müssen. Wenn Sie Status- oder Setup-Werte übergeben möchten, verwenden Sie den Konstruktor des Befehls. Sie können sogar einen anderen Präsentator oder eine andere Ansicht übergeben und den Befehl veranlassen, die Informationen von der Benutzeroberfläche abzurufen.

Eine andere Sache, die ich empfehle, ist, dass Sie die Formulare registrieren, die Ihre Ansichten implementieren, anstatt den neuen Befehl zu verwenden. Dies geschieht während der Initialisierung und die Registrierung hängt von Ihrer Hauptanwendungsklasse ab.

Zum Beispiel.

%Vor%

an anderer Stelle in der Software

%Vor%

Dann wird der Befehl wie folgt eingerichtet.

%Vor%

Entschuldigung, mein C # ist nicht meine Muttersprache. Der Vorteil dieses Ansatzes besteht darin, dass die Assembly, die die Formulare enthält, für eine andere Assembly mit einem anderen Formularsatz ausgetauscht werden kann. Dies ist besonders nützlich für die Automatisierung von Tests, bei denen anstelle des Formulars Scheinklassen erstellt werden können. Sie können es auch so einrichten, dass es null Ansichten behandelt, was nützlich ist, um eine Teilmenge Ihrer vollständigen Anwendung freizugeben.

Ich empfehle Ihnen dringend, den Befehl zum Umbrechen der Erstellung Ihrer Ansichten zu verwenden. Der zweite Vorschlag zum Registrieren von View kann abhängig von der Anwendung zu viel sein. In meiner CAD / CAM-Anwendung habe ich Dutzende Dialoge und verschiedene Hauptformen, die für verschiedene Aspekte der Einrichtung und Steuerung eines 2D-Metallschneidtisches verwendet werden. In einigen anderen Anwendungen meiner Firma verwende ich einen einfachen Ansatz, da es sich meist um einfache Dienstprogramme handelt.

    
RS Conley 08.07.2009 19:11
quelle

Tags und Links