カスタムの行数でデータをロードするリストボックスを作成したいと思います。マーケットプレイスにあるリストボックスのようなものです。何か案は?
編集:私はそのリストボックスがどのように機能するかを意味しました。マーケットプレイスデータを一度にx行ずつロードします。アプリが一度にすべてのデータをロードする必要がないように、データ行をxの数だけロードするようにしたいと思います。
カスタムの行数でデータをロードするリストボックスを作成したいと思います。マーケットプレイスにあるリストボックスのようなものです。何か案は?
編集:私はそのリストボックスがどのように機能するかを意味しました。マーケットプレイスデータを一度にx行ずつロードします。アプリが一度にすべてのデータをロードする必要がないように、データ行をxの数だけロードするようにしたいと思います。
スタックパネルの代わりにラップパネルを備えたリストボックスを用意するか、リストボックス内にグリッドを追加して、カスタムの行と列のグリッドに追加する画像を作成します
ラップパネルを追加して画像を行に配置し、このようにバックラウンドワーカークラスを追加します。画像を1行ずつ追加します。
var worker = new BackgroundWorker();
worker.DoWork += delegate(object sender, DoWorkEventArgs args)
{
// Loop through all the items
for (int i = 0; i < items.Count - 1; i++)
{
// Create a slight delay and add each item to the Items collection
Thread.Sleep(200);
Deployment.Current.Dispatcher.BeginInvoke(
() =>
{
Items.Add(items[i]);
});
}
};
worker.RunWorkerCompleted += delegate(object sender, RunWorkerCompletedEventArgs args)
{
};
worker.RunWorkerAsync();
}
4つの画像がある場合は、リストに続けて表示します。バックグラウンドワーカークラスのようにしようとします。
Deployment.Current.Dispatcher.BeginInvoke(()=>
{
Add first 4 items in list box then start the loop at index 5
});
ExtendedListBox
このライブラリのコントロールを使用できます:http: //mytoolkit.codeplex.com
public MyPage()
{
list.ScrolledToEnd += OnScrolledToEnd;
}
public void OnScrolledToEnd(object sender, ScrolledToEndEventArgs args)
{
list.TriggerScrolledToEndEvents = false;
// TODO load more data async. => call OnDataLoaded on loaded
}
public void OnDataLoaded()
{
// TODO add new items to list
list.TriggerScrolledToEndEvents = true;
}
このクラスの使用で問題が発生した場合は、こちらからお知らせください。
詳細: http: //mytoolkit.codeplex.com/wikipage?title = ExtendedListBox