這是一個雙人單位。如何在ItemsControl中實現自定義內聯搜索?
首先,在WPF中,標準的ListBox控件自動支持對其項目進行內聯搜索。它通過使用項目的ToString函數來實現這個功能,這意味着如果你有焦點放在列表框中並開始輸入,它將執行最左邊的搜索,突出顯示任何ToString與你輸入的內容相匹配的項目。在短時間內隨後的按鍵添加到搜索字符串中(即,鍵入'A'後跟'S'將向左搜索'AS',而打印'A'然後暫停,然後鍵入'S'搜索'S'
問題是這個機制似乎完全依賴於ToString返回的值,在某些情況下我們不能依賴這個值。是否還有別的東西可以用來代替ToString ?
第二部分是行爲似乎只出現在ListBox中,但沒有其他ItemsControl對象(或像TreeView那樣的分層結構)。不必從頭開始重新編寫該功能,是否有簡單的方法將它添加到ItemsControl?
我會說不。 'ListBox's通常在其中包含文本,所以這些功能是合乎邏輯的,但ItemsControl通常意味着它們中有對象,因此'ItemsControl'中的默認搜索功能不那麼合乎邏輯。你只需要對數據進行一些基本的過濾......它應該佔用10行以上的代碼,所以這並不困難。 – Sheridan 2014-09-04 15:16:23
我的問題的第一部分是什麼......這將有助於解決第二部分問題。而你的迴應完全忽略了與ListBox一起使用的數據模板。即使使用DisplayMember,也會隱含地創建一個與ToString不同步的數據模板,這種功能可能無用,更不用說混淆於獲得奇數選擇(而不是過濾)行爲的用戶,他們不知道爲什麼。 – MarqueIV 2014-09-04 15:21:30