Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why Does Binding to a Struct Not Work?

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?

like image 450
Sonny Boy Avatar asked Oct 10 '11 15:10

Sonny Boy


2 Answers

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.

like image 82
Muhammad Hasan Khan Avatar answered Oct 02 '22 08:10

Muhammad Hasan Khan


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.

like image 29
Andras Zoltan Avatar answered Oct 02 '22 08:10

Andras Zoltan