1

我正在开发一个windows phone8 应用程序 我有一个显示大量项目的列表框,我在列表框的数据模板中也有一个图像控件。

当我加载前 100 个项目时,它运行良好,当我加载接下来的 100 个项目(总共 200 个)时,应用程序崩溃。

谁能帮我解决这个问题。

这是我的列表框代码

<ListBox ScrollViewer.VerticalScrollBarVisibility="Disabled" Visibility="Visible" x:Name="commentsListBox" VerticalAlignment="Top" >
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <Border BorderBrush="#FFB9B9B9" BorderThickness="0,0,0,2" Width="462" Margin="14,0,0,0">
                                <Grid VerticalAlignment="Top" Width="470" >
                                    <Image HorizontalAlignment="Left" Height="100" Width="100" VerticalAlignment="Top" Margin="10,20,0,0" Stretch="Fill" Source="{Binding profileImage}"></Image>
                                    <TextBlock Name="userNameTextBlock"  VerticalAlignment="Top" FontWeight="Bold" HorizontalAlignment="Left" Text="{Binding userName}" Foreground="Black" Height="36" Width="238" Margin="136,18,0,0" TextTrimming="WordEllipsis" FontFamily="Tahoma" />
                                    <StackPanel VerticalAlignment="Top" HorizontalAlignment="Left" Margin="146,68,0,0" Width="314">
                                        <TextBlock Name="commentTextBlock" VerticalAlignment="Top" TextAlignment="Left" HorizontalAlignment="Left" Foreground="Black" Text="{Binding comment}" Width="313" TextWrapping="Wrap" FontFamily="Tahoma" Margin="0,0,-17,0" ></TextBlock>
                                        <TextBlock Text="{Binding date}" Height="36" Foreground="Red" Width="264"  Name="commentDate" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0,0,10,0" TextTrimming="WordEllipsis" FontFamily="Tahoma"></TextBlock>
                                        <Button HorizontalAlignment="Right" Width="100" Content="View" Height="70" FontSize="18" x:Name="viewBtn" Background="#FFD71D26" VerticalAlignment="Bottom" Margin="0,0,-10,-10"></Button>
                                    </StackPanel>

                                </Grid>
                            </Border>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                    <!--<ListBoxItem>

            </ListBoxItem>-->
                </ListBox>

并且有数据的类是

 public class WishListCommentCommonFormate
{
    public string comment { get; set; }
    public string userName { get; set; }
    public DateTime date { get; set; }
    public string profileImage { get; set; }
}

这里的图像是作为来自网站的 URL 给出的。我在 Silverlight for Windows Phone 7 中看到了改进 ListBox 性能:数据虚拟化以及其他几个类似的示例,但我无法解决这个问题。

请给我一些想法。谢谢你。

4

1 回答 1

1

两个建议。第一个如果您必须使用 ListBox,您将通过阅读ListBox 为什么要空白来获得更好的图像性能和虚拟化。在这篇来自 Windows Phone 开发团队的文章中,他们提到了一种设置图像的不同方法。

<Image> 
    <Image.Source> 
        <BitmapImage UriSource="{Binding ImgUrl}" CreateOptions="BackgroundCreation"/> 
    </Image.Source> 
</Image>

第二个建议(可能更好)是不要使用 LstBox 而是使用LongListSelector。这个控件是高性能的,并且使用更少的内存。只需在 xaml 中从 ListBox 到 LongListSelector 执行查找/替换。

于 2013-07-25T19:57:33.287 回答