2011-08-01 14 views
1

WPF AutoCompleteBoxでデータ仮想化を実装しようとしています。 Bea StollnitzのコードhereがListViewでうまく動作し、ComboBoxで簡単に動作させることができましたが、AutoCompleteBoxで正しく動作するように見える方法はありません。WPF AutoCompleteBoxデータ仮想化

正確には、リストは仮想化されており、起動時にアイテムがすべて読み込まれるわけではありませんが、AutoSourceBoxはItemsSourceが変更されたらすぐにリスト内のすべてのアイテムを繰り返し処理します(つまり、ロード時に、リスト内のすべてのページが要求されるため、仮想化されているにもかかわらず、すべてが最初に要求されてロードされます)。私の推測では、これはACBoxのフィルタリングのためですが、Populatingイベントを使用してサーバー側でフィルタリングを正常に行うことができるため、コントロールできないことに驚いています。

私は何かが不足していると感じています。これまで誰もこのようなことをやっていないとは信じられないので、私は間違ったことをしていると思います私はWPFの初心者ではないのでわかりません。私は内蔵のUI仮想化のためのすべての条件を確認しました

  • は、ここで私は(同様の問題の周りのインターネット検索に基づいて)一緒にこれを試してみてもらうためにやったことの一部です明示的にオンにすること、ListBoxの最大高さを設定することなどはOKです。

  • 私は、AutoCompleteBoxのListBoxを、Beaが使用しているListViewのように置き換えました。並べて、ListView自体は期待どおりに動作しますが、ACBoxに埋め込まれているものは動作しません。

  • ACBoxでフィルターを使用せず、カスタムフィルタを使用して、手動で設定を処理しようとしました。これは役に立ちません。カスタムフィルタでは、1つの項目の評価結果のみを指定できるため、リストをループするコードは表示されず、ループを防ぐことができないため、カスタムフィルタを作成するだけでは不十分です。フィルターを「なし」にすると、何も起こりません。

すべてのご提案をお待ちしております。

このためのターゲットは、.NET 3.5であり、私は(2010年2月発売)

ありがとうWPF Toolkitを使用しています!

+0

注:ListBox/ViewのMaxHeightをC#コードで設定するまで、UIの仮想化は機能しませんでした(ただし、関係はありません)。 XAMLで以前に設定していたときに動作しませんでした。しかし、これは主要な問題には役立たなかった。 –

+0

コンボボックスでどのように作業できたか分かりますか?すべてのポインタが評価されます – Signcodeindie

+0

@ Signcodeindieそれはかなり簡単ですが、私はちょうどリストボックスでBeaの例から作業しました。最も基本的なのは、AsyncVirtualizingCollectionをComboBoxのItemsSourceに割り当てるだけですが、実際に見た目と感触を高めるには少しスタイリングが必要です(しかし、ほとんどの場合、スタイルのコピー/ペーストが可能です)。あなたがそれにいくつかの問題を抱えているなら、それを助けるために新しい質問を開くことが良いかもしれません。 –

答えて

0

私はこれをOnItemsSourceChanged()にトラッキングしました(sourceを参照)。そこで、オートコンプリートボックスには、「データのローカルキャッシュされたコピー」が保存されているため、上記の動作が表示されます。 これはプライベートメソッドなので、ここではオーバーライドしません。

このため、Beaのソリューションでアイデアを使用しないで、AutoCompleteBoxにDataVirtualizationを適用することはできません。もし誰かがこれに関して異なる考えを持っているなら、私はそれを試してみたいと思いますが、それまではこれが私の答えと信じています。

関連する問題