我想知道如何构建WP7中的ListBox,它一次只能加载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();
}
}
任何想法?示例代码?
答案 0 :(得分:4)
您可以编辑列表框模板,以在列表末尾显示“加载更多”按钮。在Blend中,右键单击列表框,选择“编辑模板”,“编辑副本”。默认情况下,列表框中包含如下模板:
ScrollViewer
ItemPresenter
将ItemPresenter包装到StackPanel中,然后在结尾处添加一个按钮:
ScrollViewer
StackPanel
ItemPresenter
Button
该按钮将始终显示在列表框的末尾。处理该按钮的Clicked事件,将项目添加到ObservableCollection。
答案 1 :(得分:2)
您可以bind your listbox到ObservableCollection并在页面(app)加载上添加前20个项目。按下“加载更多”之后获取下一个20项并添加到集合中。项目将自动添加到列表框中。