如何在Panorama View中的列表框上快速加载数据?

时间:2011-12-13 07:45:45

标签: c# .net xaml windows-phone panorama-control

我在这里是因为我坚持这个非常讨厌的问题。我将尽力解释清楚。

我的Windows Phone xaml页面上有一个Panorama控件,有几个PanoramaItems。在每个PanoramaItem中,都有一个像这个例子中的列表框:

<controls:Panorama ItemsSource="{Binding ContextCollection}" Title="Choose your model" x:Name="PanoramaAdd">
    <controls:PanoramaItem Header="Samsung">
        <Grid>
            <ListBox height="300"  Width="300" Name="Samsung_LBX"/>
        </Grid>
    </controls:PanoramaItem>

    <controls:PanoramaItem Header="LG">
        <Grid>
            <ListBox height="300"  Width="300" Name="LG_LBX"/>
        </Grid>
    </controls:PanoramaItem>

    <controls:PanoramaItem Header="Toshiba">
        <Grid>
            <ListBox height="300"  Width="300" Name="Toshiba_LBX"/>
        </Grid>
    </controls:PanoramaItem>

我在后台办公室从这样的数据库中提取数据:

public ModelAdd()
{
    InitializeComponent();
    using (var _Context = new MyDataContext("Data Source=appdata:/DataAccessLayer.sdf;Mode=Read Only"))
    {
        //pull from my table Samsung all models of Samsung  in my Listbox                 
        Samsung_LBX.ItemsSource = _Context.Samsung.Select(x => x.Model);

        //pull from my table LG all models of LG in my Listbox
        LG_LBX.ItemsSource = _Context.LG.Select(x => x.Model);

        //pull from my table Toshiba all models of Toshiba  in my Listbox
        Toshiba.ItemsSource = _Context.Toshiba.Select(x => x.Model);
    }
}

我的问题是,当我导航到这个页面时,数据需要花费太多时间来加载,而且比我在数据库中拥有的那些品牌(三星,lg,toshiba ......)更多。因此,加载需要15秒或更多时间,我的UI会冻结,有时会崩溃。

如何让它加载更快?我已阅读有关增量加载但我不知道如何使其与我的几个列表框一起工作。

非常感谢你的时间!

等级:初学者。

1 个答案:

答案 0 :(得分:0)

您可能希望首先确保将数据显示为Ilist而不是Ienumerable,以便使用数据虚拟化。添加'.ToList();'。

Context.Samsung.Select(x =&gt; x.Model).ToList();