Silverlight 4, combobox databinding problem

Posted by synergetic on Stack Overflow See other posts from Stack Overflow or by synergetic
Published on 2010-06-18T06:40:31Z Indexed on 2010/06/18 6:43 UTC
Read the original article Hit count: 658

In my Silverlight 4 app, CustomerView (UserControl) shows Customer object as it's DataContext. Customer object has IndustryCode string property. I created combobox called cboIndustryCode and bind it to the IndustryCode property the following way:

<ComboBox x:Name="cboIndustryCode"
    SelectedValue="{Binding IndustryCode, Mode=TwoWay}" 
    ...
 />

In code-behind I populate cboIndustryCode with List of Industry object, which has Code and Name properties:

cboIndustryCode.ItemsSource = industries; //which is of List<Industry> type

Now, to show everything properly, in XAML I added the following:

<ComboBox x:Name="cboIndustryCode"
    SelectedValue="{Binding IndustryCode, Mode=TwoWay}" 
    DisplayMemberPath="Name"
    SelectedValuePath="Code"
    ...
 />

So, when I get a customer class from my data layer and set the DataContext to this customer instance, the cboIndustryCode properly displays industry name. But, then I edit customer (not necessarily IndustryCode) and save the object (which resets DataContext = new Customer()) and retrieve the customer again from database, and I see that cboIndustryCode no longer working. It just displays nothing, and if I select new value from the list, it does not update underlying customer object's IndustryCode property. The problem goes away, if I put the following code in the place where I set DataContext to a instance of customer, retrieved from database:

Binding binding = new Binding("IndustryCode");
binding.Mode = BindingMode.TwoWay;
cboIndustryCode.SetBinding(ComboBox.SelectedValueProperty, binding); 

So, in short, combobox's binding is reset somehow every time I save my data. Can someone tell me the reason?

© Stack Overflow or respective owner

Related posts about databinding

Related posts about combobox