Laden...

Struct binden und Änderungen erhalten

Erstellt von IamTheBug vor 8 Jahren Letzter Beitrag vor 8 Jahren 980 Views
I
IamTheBug Themenstarter:in
401 Beiträge seit 2006
vor 8 Jahren
Struct binden und Änderungen erhalten

Hallo,

meine Frage bezieht sich eigentlich Grundsätzlich darauf wie ich eine Struct binden kann und die Änderungen die im Interface an der Struct vorgenommen werde mitbekomme.

Es ist folgende Situation.
Ich habe eine Klasse. Diese Klasse soll Breite und Tiefe erhalten.
Anschließend soll dieses an Textfelder gebunden werden. Eins für die Breite und eins für die Tiefe.
Ich dachte mir das es ja sicher schon Klassen von MS gibt die eine Tiefe und Breite speichern.
Also kurz nachgeschaut und es gibt die Size-Struct
https://msdn.microsoft.com/de-de/library/system.drawing.size%28v=vs.110%29.aspx

und Size3d Struct:
https://msdn.microsoft.com/en-us/library/system.windows.media.media3d.size3d.aspx

Jetzt wollte ich diese in meiner Klasse verwenden um Breite und Tiefe abzubilden.
Leider funktioniert das binden dann nicht mehr so gut da die Struct ja by value gebunden wird, sprich vorher eine Kopie gemacht wird und diese verändert wird. Somit bekomme ich die Änderungen ja nicht mit.

Wie geht man mit dem "Problem" um? Muss ich jetzt wirklich selber eine Klasse schreiben mit Breite und Tiefe die im Grunde nichts anderes macht als die schon existierende Struct nur um es richtig binden zu können?

Danke und Grüße

Mfg

IamTheBug

W
872 Beiträge seit 2005
vor 8 Jahren

Du verwechselst gerade 2 Dinge.
Für das dynamische Aktualisieren einer Bindung brauchst Du INotifyPropertyChanged unabhängig ob Klasse oder Struct.
Das fehlt Dir bei dem MS SizeStruct.
Du kannst schon vom MS Size Struct erben und dann für Height und Width INotifyPropertyChanged implementieren, wenn das reicht..

F
10.010 Beiträge seit 2004
vor 8 Jahren

Man kann nicht an structs binden, da das Valuetypes sind.

http://stackoverflow.com/questions/7714883/wpf-why-does-binding-to-a-struct-not-work

I
IamTheBug Themenstarter:in
401 Beiträge seit 2006
vor 8 Jahren

Man kann nicht an structs binden, da das Valuetypes sind.

Das ist genau das was ich meine. Was mir auch klar ist. Ich wollte nur wissen ob es dafür eine Lösung gibt oder ich ebene wirklich eine Klasse selber erzeugen muss.
Dran binden kann man schon. Allerdings landen die Änderungen sonstwo in der Kopie die eben im Speicher angelegt wird.
Aber ich denke mal ich muss da selber etwas kleines schustern.

edit:
ich habe es jetzt so hingenommen und einfach eine eigene Klasse erstellt

Mfg

IamTheBug