How to bind nested ItemsControl ItemsSource to an ObservableCollection nested within parent ItemControl's bound item
<p>I have an <code>ItemsControl</code> that is bound to an <code>ObservableCollection</code>. Inside of that <code>ItemsControl</code> I have another <code>ItemsControl</code> which is bound to another <code>ObservableCollection</code> contained within the objects of the outermost <code>ItemsControl</code>'s ObservableCollection.  When the XAML parser attempts to build the innermost <code>ItemsControl</code>'s <code>DataTemplate</code> there is an exception thrown </p>

<blockquote>
  <p>System.Windows.Markup.XamlParseException: Add value to collection of
  type 'System.Windows.Controls.ItemCollection' threw an exception.</p>
</blockquote>

<p>and the inner exception is: </p>

<blockquote>
  <p>System.InvalidOperationException: Operation is not valid while
  ItemsSource is in use. Access and modify elements with
  ItemsControl.ItemsSource instead.</p>
</blockquote>

<p>To make it a little more clear, here is my XAML Structure:</p>

<pre><code>    &lt;Grid DataContext="{Binding ...Name of object holding ObservableCollection here}"&gt;
        &lt;ItemsControl Name="FilterItemsHolder" Grid.Row="1"
                  HorizontalAlignment="Stretch" VerticalAlignment="Top"
                  Margin="10,10,10,10" MinWidth="200"
                  Background="#151515"
                  ItemsSource="{Binding CheckedFilterColumns}" &gt;
            &lt;ItemsControl.ItemTemplate&gt;
                &lt;DataTemplate&gt;
                    &lt;Grid MaxHeight="100"&gt;
                        &lt;ItemsControl Name="FilterSelectionsHolder"
                                  HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
                                  Margin="10,10,10,10" MaxHeight="50"
                                  ItemsSource="{Binding FilterSelections}"&gt;
                            &lt;DataTemplate&gt;
                                &lt;rb:RBFilterOptions x:Name="FilterOptions" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" /&gt;
                            &lt;/DataTemplate&gt;
                        &lt;/ItemsControl&gt;
                    &lt;/Grid&gt;
                &lt;/DataTemplate&gt;
            &lt;/ItemsControl.ItemTemplate&gt;
        &lt;/ItemsControl&gt;
    &lt;/Grid&gt;
</code></pre>

<p>The class structure of the DataBound items is:</p>

<pre><code>public class ClassThatHoldsCollections...
{
    ... some other properties
    public ObservableCollection&lt;RBDataColumn&gt; CheckedFilterColumns { get; set; } //bound to outermost ItemsControl's (Name="FilterItemsHolder") ItemsSource

    public ClassThatHoldsCollections...()
    {
        ...initialize property values...
        CheckedFilterColumns = new ObservableCollection&lt;RBDataColumn&gt;();
    }
}
public class RBDataColumn
{
    ...some properties

    public ObservableCollection&lt;RBDataColumnFilterSelection&gt; FilterSelections { get; set; } //bound to innermost ItemsControl's (Name="FilterSelectionsHolder") ItemsSource

    public RBDataColumn()
    {
        ...initialize property values...
        FilterSelections = new ObservableCollection&lt;RBDataColumnFilterSelection&gt;();
    }
}
</code></pre>

<p>Oddly enough if I comment out the <code>&lt;DataTemplate&gt;...&lt;/DataTemplate&gt;</code> the exception is no longer thrown.  If I leave the <code>&lt;DataTemplate&gt;&lt;/DataTemplate&gt;</code> tags and comment out only the referenced user control within <code>&lt;rb:RBFilterOptions.../&gt;</code> the exception is still thrown which means that it cannot be the underlying user control that is causing the issue. </p>

<p>It seems to me that the XAML parser that builds the window is trying to add the inner <code>ItemsControl</code>'s values while still accessing the outermost <code>ItemsControl</code>'s.</p>

<p><strong>MY QUESTION, IN TWO PARTS, IS:</strong></p>

<ol>
<li>Why is the exception thrown?</li>
<li>Is there a way to have nested <code>ItemsControl</code>s whose <code>ItemsSource</code> properties are pointed to nested <code>ObservableCollections</code>?</li>
</ol>