2009-08-14 8 views
1

Ich versuche eine gute Möglichkeit zu finden MVP in klassischen Winforms zu implementieren, und ein paar Lösungen, die ich gekommen bin (zB http://codebetter.com/blogs/jeremy.miller/archive/2007/05/25/build-you-own-cab-part-3-the-supervising-controller-pattern.aspx) sprechen über die Verwendung der Datenbindung zwischen dem Modell und die Aussicht. Ich habe noch nie Datenbindung verwendet, also dachte ich, ich würde es versuchen.Datenbindung mit INotifyPropertyChanged (.Net)

Das Problem ist, kann ich nicht herausfinden, wie einfache Bindung (z. B. eine Zeichenfolge in meiner Modellklasse zu einem Textfeld im Formular) mit INotifyPropertyChanged, wie im obigen Artikel vorgeschlagen. Ich dachte, ich hätte es geklappt (das in der Form ist, in der ‚Modell‘ eine Instanz meiner Modellklasse ist):

txtModelName.DataBindings.Add(new Binding("Text", model, "Name")); 

Aber ich merkte bald, dass dies nicht INotifyPropertyChanged überhaupt verwendet hat - es funktioniert gut, ob ich diese Schnittstelle auf meinem Modell implementieren oder nicht. Nicht ein Problem an sich, aber es funktioniert nicht so, wie ich es will, das Hauptproblem ist, dass es 2-Wege-Bindung ist (Ich möchte nur von das Objekt zu das Formular binden).

Ich gehe davon aus, dass es entweder eine andere Art der Bindung mit INotifyPropertyChanged gibt, oder dass die oben beschriebene Bindung so eingestellt werden kann, dass sie nur in eine Richtung funktioniert - kann mir hier jemand helfen oder auf ein anständiges Beispiel hinweisen?

Ich benutze. Net 3.5 mit klassischen Winforms, nicht WPF.

Dank

Antwort

1

Wie sich herausstellte, war die Situation oben ein bisschen von einem roten Hering. Was geschah, war, dass ich von einer Textbox an das Modell und von dem Modell an eine andere Textbox gebunden war. Wenn ich das Modell direkt aktualisieren würde, würde es ohne die Implementierung von INotifyPropertyChanged nicht funktionieren.

Wie für die 2-Wege-Bindung, ich denke, Sie müssen nur damit leben, wenn Sie diese Methode verwenden. Wenn Sie das nicht wollen, beißen Sie einfach in die Kugel und verwenden Sie den "Passive View" -Stil von MVP.