<ListBox BorderThickness="0" x:Name="PendingChatListBox" HorizontalContentAlignment="Stretch">
<ListBox.ItemTemplate >
<DataTemplate>
<Button Height="40" Click="OpenChat_click" Content="{Binding BindsDirectlyToSource=True, Converter={StaticResource cPendingUnreadMessagesConverter}}" HorizontalContentAlignment="Center" Background="Transparent" x:Name="OpenChatButton" Foreground="Blue"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>ObservableCollection<SideBarUnit> OpenChats = new ObservableCollection<SideBarUnit>();
this.PendingChatListBox.ItemsSource = OpenChats;
if (PendingChatListBox.Items.Count > 0)
{
// WHY IS THIS OBJECT NULL?
object obj = PendingChatListBox.ItemContainerGenerator.ContainerFromItem(PendingChatListBox.Items[0]);
}发布于 2012-01-20 04:10:02
可能是因为虚拟化的原因,视图之外的项目不会为它们生成容器(如果项目面板本质上是虚拟化的;ListBoxes等的默认设置)。
或者,如果您指定了一个源,并尝试以相同的方法获取容器,则ListBox还没有时间创建它。UI线程必须空闲才能做到这一点。
https://stackoverflow.com/questions/8932564
复制相似问题