我有一个列表框,其中包含一个带有Image和TextBlock控件的datatemplate。我想通过首先获取Grid Container
来获取ImageControl<ListBox x:Name="NewsList" Margin="0,0,20,0" SelectionChanged="NewsList_SelectionChanged" />
<DataTemplate>
<Grid Width="400" Height="89">
<Image HorizontalAlignment="Left" Width="64" x:Name="ImageThumbnail" Height="64" VerticalAlignment="Top" Margin="0,10,0,0" Source="http://vnexpress.net/Files/Subject/3B/A2/3B/15/top.jpg"/>
<TextBlock Text="{Binding Title}" Margin="78,0,8,0" TextWrapping="Wrap" FontSize="26.667" Height="74" VerticalAlignment="Top"/>
</Grid>
</DataTemplate>
</ListBox>
for (int i = 0; i < feeds.Count; i++)
var containerItem = list.ItemContainerGenerator.ContainerFromIndex(i);
当我使用feeds.Count设置NewsList.Items = Feeds超过23时,一些containerItem为null。如果它小于23,我永远不会得到一个空容器。
有谁知道原因是什么以及我如何解决它。如果我们可以用另一种方法来获取imageControl
答案 0 :(得分:0)
我能看到的一件事是你的xaml看起来不对我。
不应该是这样的:
<ListBox x:Name="NewsList" Margin="0,0,20,0" SelectionChanged="NewsList_SelectionChanged">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Width="400" Height="89">
<Image HorizontalAlignment="Left" Width="64" x:Name="ImageThumbnail" Height="64" VerticalAlignment="Top" Margin="0,10,0,0" Source="http://vnexpress.net/Files/Subject/3B/A2/3B/15/top.jpg"/>
<TextBlock Text="{Binding Title}" Margin="78,0,8,0" TextWrapping="Wrap" FontSize="26.667" Height="74" VerticalAlignment="Top"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
除此之外,我不确定这是否会对你有所帮助。
答案 1 :(得分:0)
我的回答是编写一个新的ImageConverter,我们可以将其放入xaml文件中的标记中,我不再需要处理VisualTree,所以它可以正常工作