【发布时间】:2011-01-17 01:18:46
【问题描述】:
我注意到一个非常奇怪的行为: 在我的 windows phone 7 中,我有一个 ListBox,可以包含从 1-2 到 2-300 项的任何内容。 我注意到当项目数量很大时(不确定数量,但肯定 > 150 个项目),不会引发 OnSelectionChanged 事件。
这是我的列表框的 XAML
<ListBox ItemsSource="{Binding Path=Posts}" ItemTemplate="{StaticResource IconsWithText}"
ScrollViewer.VerticalScrollBarVisibility ="Disabled"
SelectionChanged="ListBox_SelectionChanged" >
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
ItemTemplate 的模板是:
<DataTemplate x:Name="IconsWithText">
<Grid x:Name="ThumLink" Width="160" Height="140" Margin="10" Background="#FF666666">
<Image Source="Resources/Images/All.png" Visibility="{Binding Path=VisibilityAll}" />
<Image delay:LowProfileImageLoader.UriSource="{Binding Picture}"
Visibility="{Binding Path=VisibilityPic}"
Stretch="UniformToFill" VerticalAlignment="Top" HorizontalAlignment="Left" />
<Border x:Name="border" VerticalAlignment="Bottom" Background="#d9ffffff" Height="62" BorderBrush="Black" Visibility="{Binding Path=VisibilityPic}" >
<TextBlock x:Name="textBlock" Text="{Binding Title}" VerticalAlignment="Top" TextWrapping="Wrap" MaxHeight="60" Style="{StaticResource PhoneTextSmallStyle}"
Foreground="Black" FontSize="20" Margin="4,1,4,0" Height="62"/>
</Border>
</Grid>
</DataTemplate>
这是一个错误还是我做错了什么?我在调试中,事件处理程序永远不会被调用,但是当项目不多时它可以工作。
西蒙娜
【问题讨论】:
-
您可能想向我们展示
ListBoxxaml。例如,您是否会在其ItemPanelTemplate中提供StackPanel,因为这样会因太多项目而失败。 -
添加了代码...是的,使用 StackPanel...为什么会失败?漏洞?有什么解决方法吗?
-
使用虚拟化堆栈面板会更好吗?
-
能否也提供您正在使用的项目模板? (顺便说一句,在你的回答评论之前加上@anthonywjones:SO 通知系统理解这个约定)。
-
如果从项目模板中取出两个图像会发生什么,它仍然会失败吗?如果不添加“全部”图像,那仍然会失败吗?如果不删除“全部”图像并恢复另一个图像,它现在会失败吗?