wpf中Combox的下拉動態搜索作法

目標:在一個頁面上用一個combox能實現能夠輸入文字後,下拉框的數據動態更新爲實時最新你的數據列表緩存

 場景:   一個能夠獲取列表的接口 假定叫作GetDataList, 返回的數據 爲一個結構體的列表,假定爲:List<Data>; Data中只用顯示某個字段,並且我要能返回我選中的data數據,而不是選中的內容設計

 難點: combox很難一部到位,即便你輸入了東西,他要實時匹配,並且能保證我能從數據源中獲取正確的數據接口

技術:string

     從網上百度到的最簡單的符合此業務的要求,即在combox的keyup中獲取combobox的text,而後吧數據 來個查找,更新Itemsource, 這種作法只針對comboxitemw爲string的選項,若是comboxitem爲datatemplate,則combobox的text不能正確顯示。能夠做爲實現的技術雛形it

實現:變量

 根據以上技術大體有兩個思路:百度

  1. 有接口獲取到列表->在從新組裝一邊只把Data中的某個字段組成一個列表,而後當comboboxkeyup出發時,兩邊都要進行過濾,真正取數據的時候從Data中一過濾的地方取,這樣的話須要在聲明一個全局變量用來保存每次過濾後的緩存的List<Data>數據。 
  2. 在combox上放一個textbox,當combobox能夠編輯的時候,就顯示爲textbox,而後輸入內容的時候實時刷新和過濾comboxbox的ItemSource,當下拉選項改變的時候,textbox就更新爲最新的選中的item,這個好處是不用在組裝列表利用了Data的列表。

總結:軟件

  1. 由於技術上支支持string爲Comboxitem的功能,因此List<Data>到ItemSource作了轉化。因此每次輸入文字搜索刷新須要緩存記錄已通過濾的itemsource,和過濾後的元數據
  2. 根據技術的缺點,針對comboxitem爲datatemplate,則combobox的text不能正確顯示時,對text進行模擬和綁定。第二種能夠進一步封裝,完善爲控件。更符合低聚合的軟件設計原則。
相關文章
相關標籤/搜索