ItemContainerGenerator всегда нулевой - PullRequest
0 голосов
/ 29 августа 2018

У меня есть элемент управления, я хочу получить таблицу данных для каждого элемента.

foreach (var item in icColumns.Items)
{
     var uiElement = (UIElement)icColumns.ItemContainerGenerator.ContainerFromItem(item);
}

Но это всегда ноль, я загружаю из кода позади.

Заранее спасибо.

private void grdJumper_DataContextChanged(object sender, 
               DependencyPropertyChangedEventArgs e)
{
     if (e.NewValue.GetType() == typeof(List<int>))
     {
         var loaderMappings = (List<int>)e.NewValue;

         foreach (var item in icColumns.Items)
         {
              var uiElement = (UIElement)icColumns.ItemContainerGenerator.ContainerFromItem(item);
          }
      }
}

1 Ответ

0 голосов
/ 29 августа 2018

Из минимального количества кода, которым вы поделились, мне удается получить Datatemplate ItemsControl.

Событие нажатия кнопки

private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            foreach (var item in icColumns.Items)
            {
                var contPresenter = (ContentPresenter)icColumns.ItemContainerGenerator.ContainerFromItem(item);

                var uiElement = VisualTreeHelper.GetChild(contPresenter, 0);
            }
        }

XAML

 <ItemsControl  x:Name="icColumns"  ItemsSource="{Binding Path=ICollectioncv, Mode=OneWay}" >
                <ItemsControl.ItemTemplate>
                    <DataTemplate >
                        <TextBox Text="{Binding Board_Value}" />
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
                <ItemsControl.ItemsPanel>
                    <ItemsPanelTemplate >
                        <StackPanel Orientation="Horizontal" />
                    </ItemsPanelTemplate>
                </ItemsControl.ItemsPanel>
            </ItemsControl>
...