0

I have this situation where I have a ListBox which is being populated from a background thread (it's an address book and the data is coming from AD).

The problem is that since the list is sorted (using CollectionViewSource) and also available to the user while more data is being retrieved, it's bouncing all over the place as new items are being inserted at various places in the list. So it's available to the user, but mostly unusable since the user's selections keep going out of view.

Is there a way to keep Focus to the item selected, and preserve the selection, even if items are being inserted above and below the selection from the background thread? I would prefer not to sort on the server, which I understand can be a bad thing when it comes to AD.

4

1 に答える 1

0

これについては、技術的なコードの観点ではなく、UI デザインの観点からお答えします。(他の誰かが、選択したアイテムをリスト ボックスに表示したままにする方法を持っていると確信しています)

大量のデータがリスト ボックスに追加されているときにリスト ボックスを使用することは、適切に行うのはかなり不可能であると私は主張します。選択を表示し続けるためにそれを取得したとしましょう。ユーザーがまだ必要なアイテムを検索している間はどうすればよいでしょうか。

まず、予想される合計読み込み時間が 10 秒未満の場合、読み込みが完了するまでリスト ボックスを無効にすることができます。(明らかに、回転するアニメーションなどでグレー表示して、ユーザーが何かを実行していることを確認できるようにします。) このオプションを既に閉じていると仮定しています。しかし、これは検討する価値があると思います。読み込み時間が非常に短い場合は、リストがまだ読み込まれている間にリストを参照できるようにすることで、ユーザーが本当に何かを得られるかどうかを検討してください。

次に、一度に表示される数量が少量になるように、リスト ボックスの内容を制限する方法を見つけることを提案します。これは、アルファベット 1 文字で始まる名前のみを表示することで実現できます (文字選択コントロールを使用)。または、ユーザーが最初の数文字を入力できる上部にフィルター エントリ テキスト ボックスを用意すると、リスト ボックスにはそれらの文字で始まる名前のみが表示されます。これにより、ユーザーが「sa」と入力すると、リスト ボックスに「sam」、「samantha」、「sacha」などが表示されるようになります。飛び回る心配。

これが本当にあなたが望んでいたものではない場合は申し訳ありませんが、見落としている場合に備えて、別のデザインを取り上げる価値があると思いました.

于 2009-09-18T17:37:59.367 に答える