3

この非常に厄介な問題に行き詰まっているので、私はここにいます。できる限りわかりやすく説明するように努めます。

Windows Phone の xaml ページに Panorama コントロールがあり、いくつかの PanoramaItems があります。各 PanoramaItem 内には、次の例のような Listbox があります。

<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);
    }
}

私の問題は、このページに移動すると、データの読み込みに時間がかかりすぎて、データベースにあるブランド (samsung、lg、toshiba...) よりも多いことです。そのため、読み込みに 15 秒以上かかり、UI がフリーズし、クラッシュすることもあります。

これをより速くロードするにはどうすればよいですか?インクリメンタル ロードについて読んだことがありますが、いくつかのリストボックスでそれを機能させる方法がわかりません。

お時間をいただきありがとうございました!

レベル: 初心者。

4

1 に答える 1

0

データの仮想化が使用されるように、データがIenumerableではなくIlistとして表示されることを確認することから始めることをお勧めします。リストに追加する();'。

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

于 2011-12-13T12:32:20.773 に答える