3

我在这里是因为我被困在这个非常烦人的问题上。我会尽量解释清楚。

我的 Windows Phone xaml 页面上有一个全景控件,其中包含多个全景项目。每个 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、东芝……)还多。因此,加载需要 15 秒或更长时间,我的 UI 冻结,有时它会崩溃。

我怎样才能让它加载得更快?我已经阅读了有关增量加载的信息,但我不知道如何使它与我的几个列表框一起工作。

非常感谢您的宝贵时间!

级别:初学者。

4

1 回答 1

0

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

Context.Samsung.Select(x => x.Model).ToList();

于 2011-12-13T12:32:20.773 回答