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
Antwort
Es gibt keine „beste“ Art und Weise in der aktuellen Situation sind Optionen wie folgt:
- eine Eigenschaft in Ihrem Ansichtsmodell definieren und dieses Ansichtsmodell zu Ihrem Singleton passiert. Singleton sollte die relevante Eigenschaft zusammen mit der eigenen ändern.
- Verschieben Eigenschaften von Singleton Ansichtsmodell oder schließen Singleton in dem Viewmodel selbst
- ein Ereignis Erstellen Sie das Objekt auf dem Singleton
- Inherit Singleton von INotifyPropertyChanged und in Ihrer VM heftet sie an Property Ereignis von Singleton zu ändern. Und überwachen Sie den Namen Ihrer Immobilie.
- ...
Easiest würde man die erste Option sein, obwohl es möglicherweise einige architektonischen Inkonsistenzen in Ihrer Anwendung sein, die behandelt werden sollen.
Vielen Dank !! Ich implementierte INotiftPropertyChanged auf dem Singleton und machte einen Event-Handler auf meinem ViewModel. –
Gern geschehen :) –
Wenn ich Sie gut verstehe, würde ich Observer Muster verwenden.
- 1. drupal> Ansichten> exponierter Filter> abschicken bei Änderung
- 2. automatische Eigenschaft mit Standardwert
- 3. Eigenschaft mit Methode?
- 4. Eigenschaft mit Python überschreiben
- 5. Access Objective-C-Eigenschaft dynamisch mit dem Namen der Eigenschaft
- 6. Wechsel "mit" Eigenschaft ändert Arten
- 7. Nullreferenceexception mit statischer Klasse Eigenschaft
- 8. JsonConvert SerializeObject mit Func Eigenschaft
- 9. Mock statische Eigenschaft mit moq
- 10. Paralleltestausführung mit Gradle maxParallelForks-Eigenschaft
- 11. Episerver 6 Eigenschaft mit Bedingung
- 12. CSS: Problem mit Float-Eigenschaft
- 13. Eigenschaften Dateigenerierung mit Eigenschaft Kommentare
- 14. eine String-Eigenschaft mit @InjectMocks
- 15. Implementieren Eigenschaft mit benutzerdefinierten Attribut
- 16. Filter mit benutzerdefinierten Eigenschaft - Umbraco
- 17. Alias generische Eigenschaft mit Standardtypen
- 18. Ändern der Eigenschaft 'Eltern' Eigenschaft
- 19. JavaScript-Eigenschaft wie C# -Eigenschaft erstellen
- 20. HQL: Reihenfolge nach Eigenschaft der nullbaren Eigenschaft
- 21. Array-Eigenschaft Anzeigeformat in WinForms-Eigenschaft Raster
- 22. Winkelfilter nach Eigenschaft ODER eine andere Eigenschaft
- 23. Eigenschaft der Eigenschaft kann nicht festgelegt werden
- 24. eine Eigenschaft, die eine andere Eigenschaft beobachtet?
- 25. Eigenschaft vorhanden
- 26. Storyboard.TargetProperty -Eigenschaft
- 27. Python-Eigenschaft
- 28. DataGridViewColumn.DataPropertyName Eigenschaft
- 29. WPF-Eigenschaft Datenbindung zum Negieren der Eigenschaft
- 30. MvvmCross Ansichtsmodell-Eigenschaft binden, um Eigenschaft anzuzeigen
Veröffentlichen Sie einige Codefragmente, insbesondere die Eigenschaft foo.Current, den zu bindenden Text und die XAML-Bindungen. –
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