У меня есть список с парой элементов, до тех пор, пока полоса прокрутки не появится, все идет отлично, но как только полоса прокрутки появляется, ItemContainerGenerator возвращает ноль.
Я прочитал некоторые блоги и обнаружил, что это может быть из-за вертуализацииStackPanel.Если я отключу это, то это может сработать, но в моем случае это сделает список слишком тяжелым и менее эффективным.
Вот код списка:
<ListBox x:Name="EventListBox"
DockPanel.Dock="Top"
Margin="5,5,5,5"
FocusVisualStyle="{x:Null}"
ItemsSource="{Binding EventModelViewCollectionView}"
Style="{StaticResource DefaultListBoxStyle}"
ItemTemplate="{StaticResource EventTemplate}"
SelectedItem="{Binding EventModelViewCollection.SelectedItem}"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.CanContentScroll="True"
ScrollViewer.IsDeferredScrollingEnabled="False"
ScrollViewer.ScrollChanged="EventScrollViewer_ScrollChanged"
IsSynchronizedWithCurrentItem="True"
Loaded="ListBox_Unloaded">
Возвращает ноль.
Здесь firstContainer должен быть первым элементом списка.Я проверил, что itemsControl правильный, и у него есть элементы, когда firstContainer имеет значение null.
DependencyObject firstContainer = itemsControl.ItemContainerGenerator.ContainerFromIndex(0);
Еще одна вещь, которая очень заметна: я увидел, что в ItemsControl есть 8 элементов списка.Состояние ItemContainerGenerator говорит: * Создан контейнер *
Не знаю, почему он не возвращает Мысли ItemsContainer ??