首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LongListSelector:由于预压而性能不佳

LongListSelector:由于预压而性能不佳
EN

Stack Overflow用户
提问于 2014-07-07 09:18:42
回答 1查看 156关注 0票数 0

我想发布一个应用程序,并测试它的商店-测试工具包。我的一个数据透视视图包含某种新闻页面,它总是从服务器获取30个新闻元素。在我的屏幕上有大约5条新闻的空间,但它仍然预加载17-18并因此而挂起。我用ItemRealized/ItemUn现值侦听器来测试它。

由于自动行为,Test告诉我,这个应用程序的响应能力非常差,这是我的错:

有什么办法让它少登新闻吗?如果我制作一个400像素高的新闻,它会加载5-6个,不会挂起。当然,添加空格并不是最好的解决方案=/

是的:我的新闻中有他们的形象。但当我评论出来的时候,它还是挂着的。18 .新闻太多了,不能一次载入。

编辑:

我是异步地获取数据并绑定它。.xaml:

代码语言:javascript
复制
<phone:LongListSelector x:Name="NewsSelector" LayoutMode="List" IsGroupingEnabled="False" ItemsSource="{Binding OnlineNews}" SelectionChanged="News_LongListSelector_SelectionChanged">
    <phone:LongListSelector.ItemTemplate>
        <DataTemplate>
            <Grid VerticalAlignment="Top" HorizontalAlignment="Left" >
                <!--...-->
                <Image Source="{Binding TeaserImage}" Width="120" Height="120" Stretch="UniformToFill" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.RowSpan="3" />
                <StackPanel Grid.Column="1" Margin="6,0,0,0">
                    <TextBlock Text="{Binding Title}" TextWrapping="Wrap" MaxHeight="54" TextTrimming="WordEllipsis" Style="{StaticResource PhoneTextAccentStyle}" FontFamily="Verdana" FontSize="22" VerticalAlignment="Top" HorizontalAlignment="Left"/>
                    <TextBlock Text="{Binding TeaserText}" TextWrapping="Wrap" MaxHeight="44" TextTrimming="WordEllipsis" Style="{StaticResource PhoneTextTitle3Style}" FontFamily="Verdana" FontSize="18" VerticalAlignment="Top" HorizontalAlignment="Left"/>
                    <TextBlock Text="{Binding PubDate}" Margin="12,4,0,4" Style="{StaticResource PhoneTextSmallStyle}" FontFamily="Verdana" FontSize="18" VerticalAlignment="Top" HorizontalAlignment="Left"/>
                </StackPanel>
            </Grid>
        </DataTemplate>
    </phone:LongListSelector.ItemTemplate>
</phone:LongListSelector>

ViewModel .cs:

代码语言:javascript
复制
public void LoadNewsPage()
{
    this.IsLoadingNews = true;
    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(new Uri(NEWS_URL));
    request.BeginGetResponse(new AsyncCallback(NewsCallback), request);
}

private void NewsCallback(IAsyncResult asynchronousResult)
{
    try
    {
        //...
        foreach (var d in list.news)
        {
            //...
            OnlineNews.Add(new OnlineNewsViewModel() {
                //...
            });
        }
    }
    catch
    {
        //...
    }
}

但我从哪里得到的数据并不重要。当我在另一个页面上等待所有新闻被加载时,它也会结结巴巴,然后切换->,创建一个图片和3个文本块->挂起的18个新闻。这是更好的卢米亚1320与更多的性能。但是我没有机会在Lumia 520上运行这个没有口吃..。

EN

回答 1

Stack Overflow用户

发布于 2014-07-08 07:42:58

一定要将图像设置为这样的背景加载:

代码语言:javascript
复制
<Image Height="100" Width="100" Margin="12,0,9,0">
  <Image.Source>
    <BitmapImage UriSource="{Binding ImgURL}" CreateOptions="BackgroundCreation"/>
  </Image.Source>
</Image>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24607082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档