2

カスタムの行数でデータをロードするリストボックスを作成したいと思います。マーケットプレイスにあるリストボックスのようなものです。何か案は?

編集:私はそのリストボックスがどのように機能するかを意味しました。マーケットプレイスデータを一度にx行ずつロードします。アプリが一度にすべてのデータをロードする必要がないように、データ行をxの数だけロードするようにしたいと思います。

4

3 に答える 3

1

スタックパネルの代わりにラップパネルを備えたリストボックスを用意するか、リストボックス内にグリッドを追加して、カスタムの行と列のグリッドに追加する画像を作成します

ラップパネルを追加して画像を行に配置し、このようにバックラウンドワーカークラスを追加します。画像を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

            });
于 2012-05-16T09:03:02.180 に答える
1

VirtualizingStackPanel要件を満たしているかどうかを確認しますか?

同様の質問

Msdn

于 2012-05-16T09:20:39.267 に答える
1

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

于 2012-05-16T11:24:30.170 に答える