I've recently encountered an issue where I have an ObservableCollection bound to a ListView. People is a structure which I have written. So long as I set the value(s) of the People objects prior to binding, everything seems to work OK. However, when I try to set the values from the GUI at runtime, the underlying objects do not seem to reflect the change.
I finally overcame this problem by simply changing People from a structure to a class. No other changes were necessary.
Can someone please explain to me why this is?
Your binding gets a copy of struct since structs are passed by value to methods. If the binding updates something; a copy in memory somewhere is being modified and hence the original object of yours is not updated.
Because the struct is passed by value to the control, therefore when you make changes in the UI, WPF writes the changes back to a different instance of People
.
Change it to a class and it'll work.
Unless you fully understand the purpose of the struct
I suggest not using it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With