Ich beabsichtige Datenbindung zwischen einigen meiner Klassen zu verwenden. Mit anderen Worten, ich verbinde keine Werte zwischen einer Modellklasse und der UI, sondern binde Variablen zwischen verschiedenen Klassen.Wie kann ich im Code mit C# Daten binden?
Ich habe über Datenbindung in C# an mehreren Stellen gelesen, aber die meisten von ihnen beziehen sich auf die Bindung zwischen Windows Form und einem Quellobjekt.
Ich bin noch neu in C#. Dies ist, wie ich verstehe, was ich tun sollte:
Erstens, für meine Quellobjekt, hat eine Klassenname von DataObject
. Das Quellobjekt muss eine INotifyPropertyChange
-Schnittstelle implementieren und dann das Ereignis auslösen, wenn die Eigenschaft health
auf "Ändern" gesetzt ist. Ich habe damit kein Problem.
Angenommen, ich habe ein Zielobjekt namens CharacterClass
. life
ist eine Eigenschaft in CharacterClass
und ist auch die Zieleigenschaft, die an die Eigenschaft health
des Quellobjekts gebunden werden soll.
Wie kann ich die beiden Eigenschaften (sowohl unidirektional als auch bidirektional) im Code nur mit dem normalen .NET-Framework verbinden?
Ein wenig Hintergrundinformationen darüber, warum ich diese Frage stellen:
Gerade falls Sie denken, dies auf eine erneute Frage ist, ist es nicht. Ich habe durch SE gesucht. Die anderen Fragen zur Datenbindung in Code sind im Kontext von WPF oder XAML, was nicht für mich ist. Ich habe auch mehrere Artikel auf MSDN gelesen und es scheint, dass ich ein Binding
Objekt erstellen und dann die Quelle und das Ziel über BindingOperations.SetBinding()
binden konnte. Die Klasse Binding
scheint jedoch Teil der WPF-Bibliothek unter dem Namespace System.Windows.Data.Binding
zu sein. Obwohl ich C# verwende, bezweifle ich, dass ich den Luxus hätte, auf WPF-Bibliotheken zuzugreifen, weil ich hauptsächlich C# als einzige Skriptsprache in Unity3D verwende. Ich glaube, ich habe nur Zugang zum vanilla.Net Framework. Aber ich bin mir da nicht ganz sicher, weil ich noch neu in C# bin.
Eigentlich ja, Sie haben Recht, über die Datenbindung Befinden für UI Sobald Sie dies verstanden haben, können Sie einfach diese erweitern 2-Wege zu unterstützen. In meiner Situation baue ich eine Benutzeroberfläche, aber nicht mit dem Windows Form. Und all diese * Zielobjekte *, auf die ich mich bezog, sind hauptsächlich meine UI-Klassen. Also, was ich hoffe, ist für eine "Gewohnheit" der Art Datenbindungstechnik, die ich auf meiner eigenen Nicht-WinForm UI implementieren könnte. – Carven
@xEnOn: Das Hauptproblem ist, dass Binding-Engines eng mit UI-Framework-Interna verbunden sind. Zum Beispiel verwendet die WPF-Bindung Abhängigkeitseigenschaften. Wenn Sie diese also verwenden möchten, müssen Sie Ihre UI-Klassen so schreiben, dass sie 'DependencyObject'-Nachkommen sind. Ich denke, du solltest deine eigene verbindliche Engine schreiben. – Dennis
Ich verstehe. Vielen Dank! Sieht so aus, als hätte ich kein Glück, C# 's Datenbindungsmodul zu verwenden. :(Ich denke, ich muss herausfinden, wie ich meine eigene Binding-Engine schreiben kann. Vielleicht werde ich hier eine neue Frage stellen, um zu verstehen, wie Datenbindungs-Engines unter der Haube funktionieren, um mir eine Idee zu geben, wie ich eine Datenbindung schreiben kann Vielen Dank, Dennis :) – Carven