Как быстро загрузить данные в списки в Panorama View? - PullRequest
3 голосов
/ 13 декабря 2011

Я здесь, потому что застрял в этой очень раздражающей проблеме. Я постараюсь объяснить как можно яснее.

У меня есть элемент управления Panorama на моей странице Windows Phone xaml с несколькими 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 с или более, мой пользовательский интерфейс зависает, а иногда происходит сбой.

Как я могу сделать это, чтобы загрузить быстрее? Я читал о добавочной загрузке, но я не знаю, как заставить ее работать с моими несколькими списками.

Большое спасибо за потраченное время!

Уровень: Начинающий.

1 Ответ

0 голосов
/ 13 декабря 2011

Возможно, вы захотите начать с того, чтобы убедиться, что ваши данные представлены как Ilist, а не как Ienumerable, поэтому используется виртуализация данных.Добавьте '.ToList ();'.

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

...