6 Stimmen

Wie implementiere ich die Benutzerkontrolle in Winforms mvp pattern?

Ich möchte das MVP-Muster implementieren. Ich habe ein Benutzer-Steuerelement, das einige Textboxen hat und wenn ich es in Form, die ich eine Methode von usercontrol und füllen Textboxen aufrufen. Aber in mvp Muster weiß ich nicht, wie ich Zugriff auf usercontrol1.fill() . Haben Sie ein Beispiel, das mir helfen könnte?

6voto

Dennis Traub Punkte 48712

Hier ist eine Beispielimplementierung des Musters. Der Presenter weiß nur, dass die Schnittstelle eine Show-Methode hat. Der Presenter ruft sie auf, aber nur das Formular (aka View) implementiert, wie das Formular angezeigt werden soll.

public interface IMyFormView {
    void Show();
}

public class MyForm : IMyFormView {

    public MyForm() {
        var presenter = new MyFormPresenter(this);
        presenter.Init();
    }

    public void Show() {
        usercontrol1.fill();
    }
}

public class MyFormPresenter
{
    private IMyView _view;
    public MyFormPresenter(IMyView view) {
        _view = view;
    }

    public void Init() {
        _view.Show();
    }
}

Wenn Sie Daten an die Ansicht übergeben müssen, können Sie ein Ansichtsmodell durch die Show -Methode oder legen Sie benutzerdefinierte Eigenschaften für die Ansicht fest.

2voto

Alejandro Martin Punkte 5361

Wenn Ihr Benutzersteuerelement in einem Formular platziert ist und das Formular eine Ansicht in Ihrem Projekt ist, dann ist diese Ansicht für den Zugriff auf das Benutzersteuerelement verantwortlich. Sie sollten auf keine Methode des Benutzersteuerelements direkt über den Präsentator zugreifen. Tatsächlich sollte der Präsentator keine Kenntnis von der Existenz dieser Methoden oder gar des Benutzersteuerelements haben. Der Präsentator weiß nur von der Existenz einer Ansicht, die eine bestehende Schnittstelle für diese Ansicht implementiert. Ihre Ansicht (das Formular) ist also diejenige, die die Methode dieses Benutzerelements kennt und aufruft. Um Werte vom Presenter zu übergeben, um das Benutzersteuerelement in Ihrem Formular zu füllen, sollte die Schnittstelle, die von Ihrer Ansicht implementiert wird, eine öffentliche Eigenschaft mit der set Methode, (und eine get Methode, wenn Sie vorhaben, auch diese Werte zu lesen). Da Ihre Ansicht diese Schnittstelle implementiert, muss in der Implementierung der Methode set Methode dieser Eigenschaft können Sie dort jede Methode des Benutzersteuerelements aufrufen, da das Benutzersteuerelement in Ihr Formular eingebunden ist und Ihr Formular von der Existenz des Benutzersteuerelements und seiner Methoden weiß. Sie sollten keine Probleme haben, von dort aus darauf zuzugreifen.

Wenn Sie die Werte aus dem Benutzersteuerelement lesen müssen, sollten Sie dies in der Ansicht auf der Registerkarte get Implementierung dieser Eigenschaft. Der Präsentator liest die Eigenschaft einfach mit der get Methode, die in der Schnittstelle definiert ist, und die Ansicht wird wissen, wie sie auf die Werte zugreifen und sie zurückgeben kann.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X