For simplicity sake, I am going to use the idea of a "car make" and a "car model" to explain my problem. I have a list of car make objects and each car make has its own list of car models. I need to populate a combo box which contains a list of all car models. I have researched this and believe that a CompositeCollection is the way to go, however, I can't seem to figure out how to do this when I don't know how large my CarMake list will be. With a fixed-length CarMake list I can do the following but I need it to be dynamic.
<ComboBox x:Name="carSelectComboBox" DisplayMemberPath="Name">
<ComboBox.Resources>
<CollectionViewSource x:Key="CarMake0Collection"
Source="{Binding CarMakes[0].Models}" />
<CollectionViewSource x:Key="CarMake1Collection"
Source="{Binding CarMakes[1].Models}" />
</ComboBox.Resources>
<ComboBox.ItemsSource>
<CompositeCollection>
<CollectionContainer Collection="{Binding Source={StaticResource CarMake0Collection}}" />
<CollectionContainer Collection="{Binding Source={StaticResource CarMake1Collection}}" />
</CompositeCollection>
</ComboBox.ItemsSource>
</ComboBox>
Any help would be much appreciated. Also, there is a chance (even a likelihood) that the list of car makes, as well as the car models, may grow/change while running the application.
This sounds like a problem for converter, unless you have good reason not to.
And later being used in your
ComboBox: