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
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..
Man kann nicht an structs binden, da das Valuetypes sind.
http://stackoverflow.com/questions/7714883/wpf-why-does-binding-to-a-struct-not-work
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