wpf Erzwinge das Erstellen eines visuellen Baums

Ich habe ItemsControl mit Grid als ItemsPanelTemplate

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

Ich erstelle ein UserControl mit diesem ItemControl in CodeBehind, und dann muss ich RowDefinitions und ColumnDefinitons erstellen. Ich benutze diese Methode, um "Gitter" zu bekommen:

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;
    }

Aber wenn ich diese Methode vor dem Anzeigen von UserControl aufrufe, gibt sie null zurück, sodass ich den Zugriff "grid" nicht finden kann, und wenn UserControl angezeigt wird, wird es nicht wie erwartet angezeigt.

Ich habe versucht zu googeln, aber alles, was ich gefunden habe, ist die Annahme, dass VisualTree nicht für ItemControl erstellt, bis es auf dem Formular angezeigt wird.

Irgendwelche Vorschläge? Danke und sorry für schlechtes englisch;)

Antworten auf die Frage(1)

Ihre Antwort auf die Frage