2011-12-05 8 views
3

このWPF ComboBoxは、ユーザーがテキストボックスのようなテキストを入力することはできませんが、入力テキストで検索できるドロップダウンとして必要です。いくつかの遅れで最新の入力を入力するとComboboxフィルターのテキストが失われます

IsEditable = falseおよびIsTextSearchEnabled = trueに設定して動作します。

しかし、問題は、ユーザーがテキスト「日本」を検索しているとします。ユーザーは "J"でコンボにテキスト入力を開始します。 「J」で始まる項目のいくつかは、ドロップダウンパネルのフィルターされたリストに表示されます。ユーザーが3〜4秒待って「a」と入力すると(「日本」と入力すると)、フィルタリングされたリストは「a」で始まる項目に移動します。

「Ja」を検索する必要がありますが、「a」を検索して「J」を破棄します。

どのようにすればこの問題を解決できますか?

答えて

1

要するに、私はあなたが(簡単に)できるとは思わない。この記事を参照してください。

WPF combobox search item

それはつまるところ何して内部ComboBoxがビルトインクラスTextSearchと呼ばれるを使用していることです。このクラスでは、タイムアウト間隔はハードコードされており、一般にアクセスできないため、この動作を変更することはできません。

しかし、ComboBoxから継承し、保護されたメンバーOnTextInputOnKeyDownを上書きする独自のコントロールを実装すると運が悪くなる可能性があります。ここでは、独自の検索ロジックと独自のタイムアウト(DependencyPropertyとして公開される可能性があり、したがってXAML内から設定可能)を実装することができます。

+0

ありがとうRuffell。継承されたコンボボックスの開発を試みます。 –

+0

.NET 4.5では、タイムアウト間隔はマウスのダブルクリック時間の2倍です。 – Lukazoid

関連する問題