ListBox с опцией «загрузить больше» - PullRequest
0 голосов
/ 15 августа 2011

Я хотел бы знать, как создать ListBox в WP7, который загружает только 20 элементов одновременно, и имеет нижний колонтитул, показывающий «загрузить больше», если таковые имеются.

Когда пользователь нажимает «загрузить еще», он загружает еще 20 в списке без загрузки ранее загруженных данных?

Я использую LINQ на заднем источнике.

мой код для XMAL следующим образом:

<Grid>
  <ListBox name="newsIndexListBoxEN">
    <ListBoxItem>
      <DataTemplate>
        <StackPanel Width="410" Orientation="Horizontal" VerticalAlignment="Top" Margin="0,5,0,5">
          <StackPanel Background="DarkBlue" Margin="10,0,0,0" Height="100" Width="100" VerticalAlignment="Top">
            <TextBlock Name="columnsTypeTB" Text="{Binding pType}" Margin="0,0,0,0" Foreground="White" FontSize="23" HorizontalAlignment="Center" />
            <Image Width="100" Height="100" VerticalAlignment="Top" HorizontalAlignment="Center" Source="Background.png" />
          </StackPanel>
          <StackPanel Width="300" Height="100" Margin="0,0,0,0">
            <Path Margin="0,0,0,0" Data="M39,8 L389,8" Fill="DarkBlue" Height="1" Stretch="Fill" Stroke="DarkBlue" UseLayoutRounding="False" Width="400"/>
            <TextBlock Margin="8,0,0,0" Text="{Binding pTitle}" Tag="{Binding pID}" Style="{StaticResource PhoneTextNormalStyle}" TextWrapping="Wrap" Width="292" Height="66" />
            <TextBlock Margin="8,5,0,0" Text="{Binding pDate}" Tag="{Binding pID}" MouseEnter="NewsViewContent_mouseEnter" Style="{StaticResource PhoneTextSmallStyle}" VerticalAlignment="Bottom" TextWrapping="Wrap" Width="292" />
          </StackPanel>
        </StackPanel>
      </DataTemplate>
    </ListBoxItem>
  </ListBox>
</Grid>

C # код следующим образом:

using (IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForApplication())
{
    using (IsolatedStorageFileStream fs = storage.OpenFile(fileName, FileMode.Open))
    {
        XDocument menuIndex = XDocument.Load(fs);

        var menuIndexList = from query in menuIndex.Descendants("news")
                            orderby (int)query.Element("newsID") descending
                            select new mkmenu
                                   {                                                
                                       pID = query.Element("newsID").Value,
                                       pTitle = query.Element("newsTitle").Value,
                                       pDate = query.Element("newspDate").Value,
                                       pType = newsType
                                   };

        newsIndexListBoxEN = menuIndexList.Count();
    }
}

есть идеи? пример кода?

Ответы [ 2 ]

4 голосов
/ 15 августа 2011

Вы можете отредактировать свой шаблон списка, чтобы в конце списка отображалась кнопка «Загрузить еще». В Blend, щелкните правой кнопкой мыши по вашему списку, выберите Edit Template, Edit a copy. По умолчанию в вашем списке есть шаблон, подобный следующему:

ScrollViewer
    ItemPresenter

Оберните ваш ItemPresenter в StackPanel, затем добавьте кнопку в конце:

ScrollViewer
    StackPanel
        ItemPresenter
        Button

Эта кнопка всегда будет отображаться в конце списка. Обработайте событие Clicked этой кнопки, чтобы добавить элементы в коллекцию ObservableCollection.

2 голосов
/ 15 августа 2011

Вы можете привязать свой список к ObservableCollection и добавить первые 20 элементов на свою страницу (приложение).Затем после нажатия «загрузить еще» получите следующие 20 предметов и добавьте в коллекцию.Элементы будут автоматически добавлены в список.

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