2011-12-05 36 views
3

我需要此WPF組合框作爲下拉列表,其中用戶無法像文本框那樣輸入文本,但仍能夠通過鍵入文本進行搜索。當我輸入最新的輸入有一些延遲時,組合框過濾文本丟失

我設置IsEditable = false和IsTextSearchEnabled = true,它的工作原理。

但問題是讓我們說一個用戶正在搜索文本「日本」。用戶使用「J」開始將文本輸入到組合中。一些以「J」開頭的項目出現在下拉麪板的過濾列表中。現在,如果用戶等待3-4秒,然後鍵入「a」(以完成鍵入「Japan」),則過濾的列表將移至以「a」開頭的項目。

它應該搜索「Ja」,但搜索「a」並丟棄「J」。

任何想法如何解決此問題?

回答

1

總之,我不認爲你可以(輕鬆地)。看到這個帖子:

WPF combobox search item

什麼它歸結爲是內部ComboBox是使用內置的所謂TextSearch類。在這個類中,超時間隔是硬編碼的,並且不能公開訪問,所以你不能改變這種行爲。

但是,通過實施繼承自ComboBox的自己的控件,您可能會有一些運氣,並提供對受保護成員OnTextInputOnKeyDown的覆蓋。在這裏,您可以實現自己的搜索邏輯和自己的超時(可以將其作爲DependencyProperty公開,因此可以在XAML中進行配置)。

+0

謝謝Ruffell。將嘗試開發一個繼承組合框。 –

+0

在.NET 4.5中,超時時間間隔是鼠標雙擊時間的兩倍。 – Lukazoid