У меня есть ItemsControl с сеткой как ItemsPanelTemplate
<ItemsControl ItemsSource="{Binding CellCollection}" Name="CellGrid">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Grid Name="grid" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
Я создаю некоторый UserControl с этим ItemControl внутри в программном коде, а затем мне нужно создать RowDefinitions и ColumnDefinitons. Я использую этот метод для получения «сетки»:
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;
}
Но если я вызову этот метод перед отображением UserControl, он вернет null, поэтому я не могу найти «сетку» доступа, а когда появляется UserControl, он отображается не так, как я ожидал.
Я пытался гуглить, но все, что я нашел, это предположение, что VisualTree не строится для ItemControl, пока он не отобразится в форме.
Какие-либо предложения? Спасибо и извините за плохой английский ;)