I think u r right that might be the issue, try dispatching the notifications (and the coll notification should be enough)
On Thursday, March 4, 2010, Tony Wright <[email protected]> wrote: > > > > > > > > > > > > > > Actually it is an ObservableCollection of ListValue objects. > ListValue probably confused you, but it is in fact our own class, not some > sort > of List of items. > > > > Just a theory I have; perhaps I am calling PropertyChanged from > the wrong thread? I would have thought that the PropertyChanged event would > still have been available in the worker thread (it is an asynchronous call) > and > would have raised an exception in that case. Not sure... > > > > > > > > From: [email protected] > [mailto:[email protected]] On Behalf Of Miguel > Madero > Sent: Thursday, 4 March 2010 7:41 PM > To: ozSilverlight > Subject: Re: Silverlight ComboBox ItemsSource won't OneWay bind > > > > > > > > Short version, try using > an ObservableCollection or creating a new enumerable instead of adding > items to the same list. > > > > > > > > > > > > > > > Hope this helps, I'm not sure if this is the issue since you > mentioned that the event is null, which I didn't expect, so it might be > something else. > > > > > > > > > > > > > > > > > > > > Long version > > > > > > Keep in mind that the databinding framework won't refresh > the target if the item is the same, which is what happens in your case. This > is > my understanting of the DBFx. > > > > > > > > > > > > The DataBinding Fx gets the binding from the controls on > load. > > > > > > The DBFx checks if the source (or any class on the > PropertyPath), in this case your ListProvider implements INotifyPropertyChange > and if it does it subscribes to it. > > > > > > The DBFx asks the source for a value and stores it (not > exactly, but let's keep it simple) > > > > > > Thd DBFx sets the value of the appropriate property in the > target (the control) > > > > > > The control updates its value > > > > > > > > > > > > Next time, something happen and the source (ListProvider) > raises a property change notification. > > > > > > The DBFx gets the value of the property that changed and > compares it witht he current value. If it's the same it doesn't set it (to > avoid unnecessary changes in the UI). > > > > > > I think this is the main problem in your > case, since you are returning the same instance. > > > > > > If the values are different, then it procceeds to set the > value of the appropriate property in the target (the control) > The control update its value > > > > > > > > > > > > > > > > > > If you use an observable collection all the ItemsControl, > the DataGrid et al will subscribe to the CollectionChanged event if the value > for the ItemsSource implements ICollectionChanged. This isn't part of the > DataBinding Framework and it's handled on each individual control (or a base > class in some cases). > > > > > > > > > > > > > > > > > > > > > > > > Other things to try > > > > > > Set a breakpoint in the getter to see if it's called and > look at the stack to see if the Databinding Fx is calling it > > > > > > Check the output window for BindingExpressionExceptions, you > might have a type. > > > > > > Set the ThrowOnException property of the binding object to > true to see if there's a problem getting the value (not sure about the name, > but you'll find it). The DBFx will swallow all exceptions by default and in > some instances it won't refresh faulted bindings (e.g. getting a value of a > Property in the path failed, so it never subscribed to the IPropertyChanged of > that object). > > > > > > > > > > > > > > > > > > > -- > Miguel A. Madero Reyes > www.miguelmadero.com (blog) > [email protected] > > > > > > > > > -- Miguel A. Madero Reyes www.miguelmadero.com (blog) [email protected] _______________________________________________ ozsilverlight mailing list [email protected] http://prdlxvm0001.codify.net/mailman/listinfo/ozsilverlight
