Ich habe irgendwo gelesen, dass die Einstellung DataContext = this
im Konstruktor eines Benutzersteuerelements ist schlechte Praxis (kann nicht finden, wo). Warum ist das eine schlechte Übung? Was ist die Alternative?Was stimmt nicht mit "DataContext = this" in WPF-Benutzersteuerelementen?
Antwort
Wenn jemand Ihr Steuerelement verwendet, wird im Allgemeinen der Datenkontext seiner eigenen Ansichtsmodellklasse festgelegt und die Eigenschaften des Steuerelements an das Ansichtsmodell gebunden.
Wenn Sie innerhalb des Steuerelements mit dem Datenkontext herumspielen und darauf vertrauen, dass er auf "this" gesetzt ist, verhindern Sie entweder, dass die Bindung funktioniert, oder Ihre Steuerung funktioniert nicht wie erwartet, weil Sie sich darauf verlassen darauf wird nicht geändert.
Angenommen, Sie haben ein Benutzersteuerelement, das eine Reihe von Untersteuerelementen enthält. Stattdessen können Sie den DataContext für die Untersteuerelemente so einrichten, dass er Ihre Benutzersteuerungsklasse (oder was immer Sie wollten) darstellt. Auf diese Weise können Sie diese Untersteuerelemente an die Eigenschaften Ihres Benutzersteuerelements binden, während Sie gleichzeitig allen Benutzern Ihres Steuerelements erlauben, den Datenkontext auf das Anzeigemodell festzulegen und auch an die Eigenschaften zu binden.
- 1. Was stimmt nicht mit der form_validation?
- 2. Was stimmt nicht mit as.numeric in R?
- 3. Was stimmt nicht mit meiner Winkelanweisung?
- 4. Was stimmt hier nicht mit meiner Syntax?
- 5. Was bedeutet DataContext = "{Binding}"?
- 6. Mischbarkeit mit d: DataContext. Was vermisse ich?
- 7. TreeMap was stimmt nicht mit "ё"?
- 8. Was stimmt nicht mit dieser Zirkulation?
- 9. Was stimmt nicht mit meinem Haskell-Code?
- 10. Was stimmt nicht mit der Rechnercodierung ???
- 11. Was stimmt nicht mit meinen Dateiabhängigkeiten?
- 12. Was stimmt nicht mit diesen Parametern?
- 13. Was stimmt nicht mit meiner Tiefenstruktur?
- 14. Was stimmt nicht mit meinem Datumsregex?
- 15. Was stimmt nicht mit der Winkelkomponente?
- 16. Was stimmt nicht mit meinem Muster?
- 17. Was stimmt nicht mit printf ("% llx")?
- 18. C++ "this" stimmt nicht überein Objektmethode wurde aufgerufen
- 19. Was stimmt mit meinen Validierungen in Rail 4 nicht?
- 20. Was stimmt mit mehreren Modellen in meiner Einzelansicht nicht?
- 21. Was stimmt nicht mit GHC Haskells aktuellem Constraint-System?
- 22. Was macht Objekt (this)?
- 23. Was ist der Unterschied zwischen "this", "$ this" und "$ (this)"?
- 24. Was stimmt nicht mit meinen Definitionen für den Direktivenbereich?
- 25. Was stimmt nicht mit dem Winkelkomponenten-Parameter "Bindungen"?
- 26. $ this php, was es
- 27. Was stimmt nicht mit der Chrome App client_id?
- 28. Was stimmt hier nicht mit meiner Syntax? (SQLite)
- 29. Was stimmt nicht mit der regulären Ausdrucksweise von JavaScript?
- 30. Sagen Sie mir, was mit diesem Code nicht stimmt
Danke, aber was ist die Alternative? –
@blahblah: Ich habe meine Antwort mit einer Alternative aktualisiert. –