自動的にロード可能な listBox を実装する方法を教えてください。要素を下にスクロールすると、前の要素に追加する必要があります。残念ながら、そのようなリストの例は見つかりませんでした。ネットワークでは ObservalableCollection を使用するように勧められていることがわかりましたが、コレクションに要素を追加する方法がわかりません。これが私の十分なテストアプリケーションです。
Web サービスに接続し、xml 解析から取得する必要があります。このようなリクエストがhttp://beta.sztls.ru/mapp/eps/?count=10の場合、Web サービスでの作業の例を次に示します。このようなリクエストhttp://beta. sztls.ru/mapp/eps/?count=10&skip=10、次の 10 のニュースを含む xml を返します クラスがあります
public class Item
{
public string Description { get; set; }
public string Title { get; set; }
public string Image { get; set; }
}
そしてコードビハインドで
public partial class MainPage : PhoneApplicationPage
{
private ObservableCollection<Item> _collection;
public ObservableCollection<Item> Collection
{
get
{
if (_collection == null)
{
_collection = new ObservableCollection<Item>();
}
return _collection;
}
}
private int endIndex = 0;
// Конструктор
public MainPage()
{
InitializeComponent();
this._collection = new ObservableCollection<Item>();
this.listBox1.ItemsSource = Collection;
this.listBox1.Loaded += new RoutedEventHandler(listBox1_Loaded);
}
void listBox1_Loaded(object sender, RoutedEventArgs e)
{
try
{
LoadItems(10);
}
catch (Exception exception)
{
MessageBox.Show(exception.StackTrace);
}
}
private void LoadItems(int count)
{
WebClient webClient = new WebClient();
webClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(webClient_DownloadStringCompleted);
webClient.DownloadStringAsync(
new Uri(String.Format("http://beta.sztls.ru/mapp/eps/" + "?count={0}" + "&skip={1}" + "&ticks={2}",
count, this.endIndex, DateTime.Now.Ticks)));
this.endIndex+=count
}
void webClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error == null)
{
ParseResult(e.Result);
}
}
private void ParseResult(string result)
{
XElement element = XElement.Parse(result);
var res = from part in element.Descendants("news")
select new Item
{
Image = part.Element("image_url").Value,
Title = part.Element("title").Value,
Description = part.Element("description").Value
};
//Here,as far as I understand, I need like this Collection.Add(res)
}
}
Xamlで
<toolkit:LongListSelector Grid.Row="1" IsFlatList="True" x:Name="listBox1">
<toolkit:LongListSelector.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Source="{Binding Image}" Width="100" Height="100"/>
<StackPanel>
<TextBlock Text="{Binding Title}" FontSize="22" Foreground="Red"/>
<TextBlock Text="{Binding Decription}" FontSize="26" Foreground="Blue"/>
</StackPanel>
</StackPanel>
</DataTemplate>
</toolkit:LongListSelector.ItemTemplate>
<toolkit:LongListSelector.ListFooterTemplate>
<DataTemplate>
<TextBlock x:Name="footer"/>
</DataTemplate>
</toolkit:LongListSelector.ListFooterTemplate>
</toolkit:LongListSelector>
また、新しいアイテムの読み込みリクエストを送信する必要がある時間を追跡するにはどうすればよいですか?
助けてくれてありがとう、私の英語でごめんなさい。http://www.bing.com/translator =)を使用しました