Gibt es eine saubere und/oder akzeptierte Standardmethode, um von einem IValueConverter auf das ViewModel zurückzugelangen, oder bricht dies das MVVM-Muster? Grundsätzlich möchte ich gebundene Daten in der Benutzeroberfläche basierend auf anderen Eigenschaften des ViewModel konvertieren. Ich denke, das ist die gleiche Frage, wie Sie auf das Fenster/die Seite von einem IValueConverter verweisen, da ein Verweis auf das Steuerelement nicht an die Convert/ConvertBack-Methoden übergeben wird.Einen Verweis auf das ViewModel von einem IValueConverter erhalten
Antwort
Ich würde vorschlagen, dem ViewModel eine neue Eigenschaft hinzuzufügen, die die anderen Eigenschaften im ViewModel verkettet oder kombiniert. Dies beseitigt die Notwendigkeit für eine IValueConverter
alle zusammen.
Auschecken this Diskussion auf IValueConverters
bei Verwendung von MVVM.
Immer wenn ich das seltene Szenario habe, wenn ich mehrere Eigenschaften von einem ViewModel in einem Konverter verwenden muss, überlasse ich einfach das gesamte Ansichtsmodell als die Eingabe, ala;
<Textbox Text="{Binding, Converter={StaticResource WholeObjectConverter}"/>
Soweit eine Referenz auf das Fenster/Seite/Ansicht bekommen, die die Umwandlung aufgerufen ist keine gute Idee, da dies sicherlich das MVVM Muster bricht. Die Idee besteht darin, dass Ihre Ansichten und Daten separate Entitäten sind und sich gegenseitig nicht kennen sollten.
Wenn Sie es wirklich hacken wollten, könnten Sie wahrscheinlich clever werden und die gewünschten Verweise (entweder ViewModel oder View) als ConverterParameter-Teil der Bindung übergeben.
- 1. Einen Verweis auf den übergeordneten IFRAME erhalten
- 2. Einen Verweis auf den UIApplication-Delegaten erhalten
- 3. So erhalten Sie einen Verweis auf LocationManager in einem Fragment
- 4. Ist es möglich, einen Verweis auf das Array ausgewählter Werte auf einem Select2 zu erhalten?
- 5. Caliburn.Micro: Wie kann ich ActionExecutionContext einen Verweis auf die Ansicht geben, wenn ich das ViewModel ausführe
- 6. Wie erhalten Sie einen Verweis auf das übergeordnete Objekt in einem deserialisierten MongoDB-Dokument?
- 7. Wie kann ich einen Verweis auf ein Steuerelement erhalten, das in einem Repeater erstellt wurde?
- 8. SSIS erhalten Verweis auf Paket
- 9. Einen Verweis auf ViewHolder auf RecyclerView erhalten Klicken Sie
- 10. Mit MVVM, wie kann ein ContextMenu ViewModel das ViewModel finden, das das ContextMenu geöffnet hat?
- 11. Async-Implementierung von IValueConverter
- 12. Wie bekomme ich einen Verweis auf den aktuellen Router von ViewModel?
- 13. Verweis auf einen Zeiger
- 14. Ist es möglich, einen Verweis auf eine Silverlight-Seite von einem WebPart zu erhalten?
- 15. Subskribiert einen Verweis auf const
- 16. Wie kann ich einen Verweis auf eine Methode erhalten?
- 17. Verweis auf globale Variable von einem Modul
- 18. Erhalten Sie einen Verweis auf <script> übergeordnetes Element
- 19. jQuery: Kann ich einen Verweis auf die gebundenen Ereignisse auf einem Element erhalten?
- 20. Übergeben Sie einen Benutzer zu einem ViewModel
- 21. Wie gebe ich einen veränderbaren Verweis auf einen Builder, aber nur einen unveränderlichen Verweis auf das erstellte Objekt?
- 22. Verweis auf einen Dictionary-Wert
- 23. WebSecurity.CreateUserAndAccount erhalten Verweis auf den erstellten Benutzer
- 24. Verweis auf das übergeordnete Fenster von einem iframe auf einem modalen Popup
- 25. Zugriff auf eine Eigenschaft in einem ViewModel von einem anderen
- 26. Verweis auf ein fstream-Objekt, das einen Fehler erzeugt
- 27. Übergeben von Werten an IValueConverter
- 28. list.add scheint einen Verweis auf das ursprüngliche Objekt hinzuzufügen?
- 29. Verweis auf einen lokalen Ordner in einem OSGI-Plugin
- 30. Wie kann ich einen Verweis auf einen Ausgabestream erhalten, der in das Ausgabefenster von Visual Studio schreibt?
+1 Konverter können weitgehend abgeschafft werden, wenn MVVM praktiziert wird. Dadurch erhalten Sie einen saubereren und verständlicheren Code. –