WPF databinding to System.Data.Linq.Table<T>, how to update the interface?


WPF databinding to System.Data.Linq.Table<T>, how to update the interface?



I have this combo bound to a linq table. Is there a lightweight way to update the UI (combo values that are displayed to the user) when I insert a new record in the linq table?

Basically from what I understand I should have used an ObservableCollection, but I don't want to copy the data back & forth from the linq table to that collection, I only want to have data in the linq table.

Is that possible?

EDIT

OK Here is what i have done (and still it doesn't work):

    private ObservableCollection<Categories> m_Categories;     private ObservableCollection<Categories> Categories     {         get         {             return m_Categories;         }     } 

in the XAML i have:

                 <ComboBox Name="cmbCategory"                             ItemsSource="{Binding Categories}"                            DisplayMemberPath="Name"                            SelectedValuePath="Id"                            /> 

So, pretty simple.

       //if i have a new category, i want to update the combo's content         if (frmEditCategory.ShowDialog() == true)         {             //get the new category and add it to the ObservableCollection             LibraryDataStore.Instance.Categories.ToList().ForEach(p =>              {                 if (!m_Categories.Contains(p))                 {                     m_Categories.Add(p);                 }             });              //update the target? is this correct?!             BindingExpression be = cmbCategory.GetBindingExpression(ComboBox.ItemsSourceProperty);             if (be != null)                 be.UpdateTarget();              } 

Checked with the debugger, m_Categories contains the new category, but it doesn't show up in the combo.

Also, do you know any good tutorial or blog post about combo binding?...

Thank you in advance




Update a binding that doesn't implement IObservable collection

1:



Need help with Eval inside DataList
What you are asking for is not possible.


Binding ComboBox.SelectedItem in Silverlight
You need a mediator of some sort, and you have already identified the correct one- ObservableCollection.


How can I catch a exception form ObjectDataSource.Updata()
You have to move the Linq data somewhere if you want your user interface to be notified when it changes.


How do I bind a repeater to a List<Person> to also update the bound items? (2-way)
You should have one ObservableCollection, which you add your Linq data to, and then you should bind the combo-box to the ObservableCollection rather than directly to the table.


Binding ComboBox.SelectedItem in Silverlight (more)
That is the simplest, most light-weight solution you can create and still receive automatic change notifications..
Is there a nullable datepicker that I can bind to?


In WPF, is there a way to bind to sibling properties?


97 out of 100 based on 77 user ratings 727 reviews