2012-04-03 20 views
0

Ich habe eine View, die an ein ViewModel angehängt ist. Ich habe eine Singleton-Klasse, die von foo.Current ausgesetzt ist. Ich habe eine Eigenschaft für diese Klasse, die sich als Ergebnis eines button click-Befehls ändert, der eine foo.Current-Funktion aufruft. Ich möchte in der Lage sein, den Text einer Textbox an diesen Wert zu binden, und wenn dieser Wert aktualisiert wird, wird die Textbox aktualisiert. Mein ViewModel implementiert INotifyPropertyChanged und ich habe andere Eigenschaften für das Ansichtsmodell, das Update steuert fein. Was ist der beste Weg, um diese Singleton-Klasse mein ViewModel mit dem neuen Wert zu aktualisieren? Ich denke, ich muss einen Weg finden, um die Singleton-Klasse das ViewModel zu aktualisieren.MVVM-Bindung mit exponierter Eigenschaft

+0

Veröffentlichen Sie einige Codefragmente, insbesondere die Eigenschaft foo.Current, den zu bindenden Text und die XAML-Bindungen. –

+0

Die Implementierung von INotifyPropertyChanged ist nur der richtige Weg für die Update-Benutzeroberfläche, wenn die ViewModel-Eigenschaften aktualisiert wurden. Es ist kein Unterschied, wie Sie Instanz von ViewModel über Konstruktor oder über Singleton foo.Current erhalten. – Andris

Antwort

2

Es gibt keine „beste“ Art und Weise in der aktuellen Situation sind Optionen wie folgt:

  1. eine Eigenschaft in Ihrem Ansichtsmodell definieren und dieses Ansichtsmodell zu Ihrem Singleton passiert. Singleton sollte die relevante Eigenschaft zusammen mit der eigenen ändern.
  2. Verschieben Eigenschaften von Singleton Ansichtsmodell oder schließen Singleton in dem Viewmodel selbst
  3. ein Ereignis Erstellen Sie das Objekt auf dem Singleton
  4. Inherit Singleton von INotifyPropertyChanged und in Ihrer VM heftet sie an Property Ereignis von Singleton zu ändern. Und überwachen Sie den Namen Ihrer Immobilie.
  5. ...

Easiest würde man die erste Option sein, obwohl es möglicherweise einige architektonischen Inkonsistenzen in Ihrer Anwendung sein, die behandelt werden sollen.

+0

Vielen Dank !! Ich implementierte INotiftPropertyChanged auf dem Singleton und machte einen Event-Handler auf meinem ViewModel. –

+0

Gern geschehen :) –

0

Wenn ich Sie gut verstehe, würde ich Observer Muster verwenden.

Verwandte Themen