ItemsPanelTemplateとしてグリッドを持つItemsControlがあります
<ItemsControl ItemsSource="{Binding CellCollection}" Name="CellGrid">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Grid Name="grid" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
コードビハインドでこのItemControlを使用してUserControlを作成し、次に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用に構築されていないという仮定だけです。
助言がありますか?悪い英語をありがとうそして申し訳ありません;)