One cool thing about the new BindingSource object in 2.0 is that it can be cascaded very easily. You simply specify the first as the DataSource for the second and let it know what collection property to display. The datasource is automatically updated when the parent selection is changed.
Code:
IList countries = ListCountries();
BindingSource source1 = new BindingSource(countries, null);
BindingSource source2 = new BindingSource(source1, "States");
BindingSource source3 = new BindingSource(source2, "Cities");
comboBox1.DataSource = source1;
comboBox2.DataSource = source2;
comboBox3.DataSource = source3;
Unfortunately it seems like if the collection object ("States" and "Cities") does not implement IList, the cascading displays correctly at first but doesn't update automatically. Since ISet is an ICollection but not an IList, by default it would seem that this functionality cannot be leveraged when using NHibernate.
Does anybody know of another solution other than registering BindingManagerBase.PositionChanged events?