Combining a heirachy of observable collections into a single observable collection
===

I have a heirachy of observable collections, a bit like this:

	interface IItem
	{
		ObservableCollection<IItem> Children { get; }
	}

Given an `IItem` (or an `ObservableCollection<IItem>`) I want to construct an other observable collection that recusively contains all child `IItem` items.  

Modifying any of these items to have additional children should update the resulting observable collection.  Note that there are no circular references.

I'm aware of the [CompositeCollection Class](http://msdn.microsoft.com/en-us/library/system.windows.data.compositecollection.aspx) and I'm sure that this should help me, but I can't see a neat way to use this with data structured heirachically in this way.