2011-08-15 53 views
0

WP7でListBoxを構築する方法を知りたいのですが、一度に20個のアイテムしかロードできず、足りない場合は "load more"を表示するフッターがあります。"load more"オプションを使用したListBox

ユーザーが「もっと読み込み」を押すと、以前に読み込まれたデータを読み込まずにリストに20を追加しますか?

私は後方のソースでLINQを使用しています。

次のようにのXmaIのための私のコード:

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

任意のアイデア?サンプルコード?

答えて

4

リストボックスのテンプレートを編集して、リストの最後に[もっと読み込む]ボタンを表示することができます。ブレンドでリストボックスを右クリックし、テンプレートの編集、コピーの編集を選択します。

ScrollViewer 
    ItemPresenter 

はその後、最後にボタンを追加し、StackPanelのにあなたのItemPresenterラップ:デフォルトでは、リストボックスには、このようなテンプレートを持っているボタンは常にの最後に表示されることを

ScrollViewer 
    StackPanel 
     ItemPresenter 
     Button 

リストボックスそのボタンのClickedイベントを処理して、ObservableCollectionにアイテムを追加します。

+0

"Button"をItemPresenterの同じレベルに設定することはできません。 StackPanelと常に同じレベルです。この結果、常にページ上部にボタンが表示されます。 –

+0

ありがとう!私はどこで間違ったのかを知ることができます! –

2

あなたはbind your listboxからObservableCollectionまであなたのページ(アプリ)に最初の20個のアイテムを追加できます。 「もっと読み込む」を押すと、次の20項目が取得され、コレクションに追加されます。項目は自動的にリストボックスに追加されます。

+0

私の最初のリンクに既に例が含まれています –

関連する問題