두 개의 항목이있는 목록 상자가 있습니다. 스크롤 막대가 표시되지 않을 때까지 모든 것이 완벽하게 표시되지만 스크롤바가 나오면 ItemContainerGenerator는 null을 반환합니다.ListBox ItemContainerGenerator는 listbox에 항목이있는 경우에도 null을 반환합니다.
일부 블로그를 읽고 그것이 vertualization 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">
이 null을 반환 : 여기
은 목록 상자에 대한 코드입니다.여기에서 firstContainer는 첫 번째 listbox 요소 여야합니다. itemsControl이 정확하고 firstContainer가 null 일 때 항목이 있는지 확인했습니다.
DependencyObject firstContainer = itemsControl.ItemContainerGenerator.ContainerFromIndex(0);
한 매우 눈여겨볼 것은 더 : 나는 ItemsControl에에 거기 (8 개) 목록 상자 항목을 보았다. ItemContainerGenerator 상태가 * 컨테이너가 생성 됨 *
왜 반환하지 않는지 알 수 없음 ItemsContainer 생각들 ??
나는 다음 링크를 통과했다 : http://drwpf.com/blog/2008/07/20/itemscontrol-g-is-for-generator/ – Rohit