wpf force, aby zbudować drzewo wizualne

Mam ItemsControl z Grid jako ItemsPanelTemplate

<ItemsControl ItemsSource="{Binding CellCollection}" Name="CellGrid">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <Grid Name="grid" />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
</ItemsControl>

Tworzę trochę UserControl z tym ItemControl wewnątrz za kodem, a następnie muszę utworzyć RowDefinitions i ColumnDefinitons. Korzystam z tej metody, aby uzyskać „siatkę”:

private TChildItem FindVisualChild<TChildItem>(DependencyObject obj) where TChildItem : DependencyObject
    {
        for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
        {
            var child = VisualTreeHelper.GetChild(obj, i);

            if (child != null && child is TChildItem)
                return (TChildItem)child;

            var childOfChild = FindVisualChild<TChildItem>(child);

            if (childOfChild != null)
                return childOfChild;
        }

        return null;
    }

Ale jeśli wywołam tę metodę przed wyświetleniem UserControl, zwraca wartość null, więc nie mogę znaleźć „siatki” dostępu, a gdy pojawia się UserControl, nie jest ona wyświetlana zgodnie z oczekiwaniami.

Próbowałem google, ale wszystko, co znalazłem, to założenie, że VisualTree nie buduje dla ItemControl, dopóki nie pojawi się w formularzu.

Jakieś sugestie? Dzięki i przepraszam za zły angielski;)

questionAnswers(1)

yourAnswerToTheQuestion