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?
Antworten
Zu viele Anzeigen?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.
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.