2011-01-19 34 views
1

我有一個autocompletebox可以工作,但對於我希望獲得幫助的一個奇怪之處。在彈出窗口中選擇一個項目時,使用鍵盤向下箭頭,然後使用回車鍵或鼠標選擇它,該項目將被選中並更新到自動完成框中。但是,如果不是向下箭頭移動到該項目而只是將鼠標懸停在該項目上並用鼠標選中它,則selecteditem會正確設置,但autocompletebox不會使用所選項目更新。wpf - autocompletebox不會在mousedown上更新

也就是說,向下箭頭並選擇一個項目,自動完成框反映所選項目,而只是懸停並選擇項目意味着自動完成框不會反映選擇 - 而是顯示用戶輸入框中的內容;請注意,支持屬性知道所選項目,因此它可以以任何方式工作,只有它不會反映在文本框中。

任何幫助表示讚賞。 感謝

我要補充,這是OnSelectedItemChanged似乎並沒有得到所謂...

+0

您是自己實現了自動完成框還是引用了Codeplex上WPF Toolkit中的自動完成框? (或者也許是另一個?我們不能回答你的問題,如果我們不知道。 – 2011-01-19 07:25:45

回答

2

這個問題說明如下:http://www.siimviikman.com/2012/05/30/wpf-autocompleteboxfiltering-similar-items/

正如在文章的最後一種高精度,用戶無法導航項目(使用箭頭鍵+按TAB鍵)。這就是爲什麼我不能使用他們的解決方案。

在WPF工具包的源代碼(UpdateTextCompletion方法),人們可以改爲:

// Perform an exact string lookup for the text. This is a 
// design change from the original Toolkit release when the 
// IsTextCompletionEnabled property behaved just like the 
// WPF ComboBox's IsTextSearchEnabled property. 
// 
// This change provides the behavior that most people expect 
// to find: a lookup for the value is always performed. 
newSelectedItem = TryGetMatch(text, _view, AutoCompleteSearch.GetFilter(AutoCompleteFilterMode.EqualsCaseSensitive)); 

所以我簡單地修補的WPF Toolkit和註釋,以UpdateTextCompletion方法的調用,無論是在OnAdapterSelectionComplete和OnAdapterSelectionCanceled。

因爲我沒有使用文本完成,所以此修復似乎工作正常。