Проблемы с динамическим списком Windows Phone 7 и RSS-каналом

У меня огромные проблемы с этим, и я надеюсь, что кто-то возьмет меня под свое крыло и поможет мне пройти через это.

Моя проблема заключается в том, что я не знаю, как динамически добавлять дополнительные элементы в список после получения первого набора из 15 через мой собственный RSS-канал, привязанный к моему веб-сайту, в мой Windows Phone 7.

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

Однако это создает проблему при кодировании для моего телефона. Если я ограничу свой RSS-канал 15 самыми последними элементами, как я могу получить предыдущие за пределами этих 15, и другая проблема, как их загрузить?

У меня уже есть классы RSS-каналов, и я могу успешно загрузить их в свой телефон. Это не проблема. Опять же, как только я загружу свои первоначальные 15 элементов в Windows Phone 7, как я могу загрузить дополнительные наборы из 15, если я сохраняю свои элементы RSS на своем веб-сайте xml до 15 элементов за раз (опять же, чтобы я не не иметь RSS-канал с тысячами элементов каждый раз, когда человек загружает его)

Любая помощь приветствуется.

СС страницы:

private void Button_Click(object sender, RoutedEventArgs e)
    {
        RssService.GetRssItems(
            WindowsPhoneBlogPosts,
            (items) => { listbox.ItemsSource = items; },
            (exception) => { MessageBox.Show(exception.Message); },
            null
            );
    }

XAML-код страницы:

        <ListBox x:Name="listbox" Grid.Row="1" SelectionChanged="listbox_SelectionChanged" Style="{StaticResource ListBoxStyle1}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="60" />
                        </Grid.RowDefinitions>
                        <Image x:Name="aaa"  Grid.Row="0" HorizontalAlignment="Left" Height="60" Width="60" Source="{Binding Url}"/>
                        <TextBlock Grid.Row="1" Text="{Binding PublishedDate}" Foreground="Green" />
                        <TextBlock Grid.Row="2" TextWrapping="Wrap" Text="{Binding PlainSummary}" />
                    </Grid>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

Та же страница Xaml:

<phone:PhoneApplicationPage.Resources>
    <Style x:Key="ListBoxStyle1" TargetType="ListBox">
        <Setter Property="Background" Value="Transparent"/>
        <Setter Property="Foreground" Value="{StaticResource PhoneForegroundBrush}"/>
        <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Disabled"/>
        <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/>
        <Setter Property="BorderThickness" Value="0"/>
        <Setter Property="BorderBrush" Value="Transparent"/>
        <Setter Property="Padding" Value="0"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ListBox">
                    <ScrollViewer x:Name="ScrollViewer" Background="{TemplateBinding Background}">
                        <StackPanel>
                            <ItemsPresenter/>
                            <Button x:Name="thebutton" Content="Button" Visibility="{Binding LoadMore}"/>
                        </StackPanel>
                    </ScrollViewer>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</phone:PhoneApplicationPage.Resources>

person Clark    schedule 24.07.2011    source источник
comment
Итак, у вас есть фид, и это не проблема, так что же это??   -  person CodingGorilla    schedule 25.07.2011
comment
Проблема в том, что (и, возможно, мое непонимание RSS-каналов), если я ограничу свой RSS-канал до 15 элементов... и скажем, через месяц у меня будет 500 элементов, но я все равно покажу только 15 самых последних... как Могу ли я заставить свой телефон показывать предыдущие 485 всякий раз, когда я хочу нажать кнопку «Загрузить еще»? (разбивая их на небольшие куски, скажем, по 15 штук при каждой загрузке?)   -  person Clark    schedule 25.07.2011


Ответы (1)


Вы должны прочитать о виртуализации данных и о том, как загружать данные при прокрутке и, наконец, обо всей концепции, лежащей в основе виртуализация в целом.

person Claus Jørgensen    schedule 24.07.2011
comment
Клаус, спасибо, посмотрю. - person Clark; 25.07.2011
comment
так что, по сути, я могу иметь в своем RSS-канале 1000 элементов на своем веб-сайте. Не все 1000 будут загружены при звонке с телефона, и я могу сделать так, чтобы они появлялись по мере необходимости, когда я прокручиваю список. Это правильно? - person Clark; 25.07.2011
comment
У вас есть два варианта: а) загрузить все данные одним запросом и позволить виртуализации обрабатывать рендеринг. Или б) Загрузите x элементов и при прокрутке вниз до конца сделайте еще один запрос, чтобы загрузить больше. Но 1000 элементов — это не так уж и много, поэтому я не понимаю, почему бы вам просто не получить их все с первого запроса. - person Claus Jørgensen; 25.07.2011
comment
Я должен упомянуть, что я загружаю изображения, поэтому я думаю, что мне придется выбрать последний вариант. - person Clark; 25.07.2011
comment
Не имеет большого значения. Вы можете просто лениво загружать изображения, чтобы они сначала отображались, когда вы прокручиваете их вниз. Google для LowProfileImageLoader - person Claus Jørgensen; 25.07.2011