成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

各種簡單實現WPF搜索列表功能方法介紹

開發 開發工具
WPF搜索列表的實現方法有很多種。我們在文章中為大家總結出了四種實現方法,希望對又需要的朋友有所幫助,加深我們對WPF的認識。

WPF開發工具的正確應用,能夠方便的實現一些以前難以實現的圖形界面處理方法。在這里我們就先來了解一下有關WPF搜索列表的實現方法。#t#

現在很多程序都提供了搜索功能。比如MSN的Search Contract,VS和Blend里的Property Search。一般是從一個比較大的,用戶不太方便查找的列表中按關鍵字搜索符合條件的項目。

 

下面就來介紹一下WPF搜索列表的實現。對WPF的類庫功能不太熟悉的人可能會想到下面幾個解決方案。

1. 根據關鍵字,對List綁定到的數據源進行修改,把不符合關鍵字的數據項暫時移出列表。這個就不評價了,入門選手的方案。性能和代碼量都能讓你瞠目結舌。

2. 上面的移出列表不太好?那就不移走了,把不想看到的Item的Visibility設置成Collapsed不就行了?這是個學院派的方案,遇到一個問題解決一個,而且看上去又是那個的合情理。但是,這個要如何實現呢?不要指望直接去設置Item的Visibility,因為控件上的順序和數據上的順序不一定相同。那你就要把Visibility綁定吧。那就要到數據上加個IsMatched屬性吧。好了,現在每個Item都多了一個屬性和一個綁定。

3. 使用Converter過濾,ConverterParameter作為關鍵字。多完美啊,多么具有新創意識啊。這個是東方不敗式的方案。微軟也不是吃干飯的,如果這個Convert真是萬金油似的,它就不叫Converter了。如果沒有問題也就罷了,可這個方案的確是有問題的。問題如下。

a. Converter的返回值是一個新的List,而不是你本來打算綁定到的那個List了。也就是說ListBox的ItemsSource將綁定到一個在Converter中生成的List中。如果哪天你想得到這個List,好么,去Converter里找吧。它和Data Model根本不在一層。這時你有兩個選擇,要么破壞軟件的層次結構,要么用其它方案重寫這個功能。

b. 性能問題,筆者所在的項目就在用這個方法。當項目數超過3000時,性能就已經讓人無法忍受了。這時其實用數據綁定的角度,你沒得解決方案,無論開啟數據綁定的異步功能,還是自己用BackgroundWorker異步,都不能達到想要的效果。

當然,如果你的項目,使用Converter完全可以滿足你的要求,而且你也已經把Converter用得如火純青,那就用吧,一點問題也沒有。筆者所在項目現在就在用這個方法,因為“它可以工作,那就別去動它。”

好了,現在就來介紹目前筆者所能找到的最佳方案——使用CollectionViewSource的Filter事件,在事件處理函數中你會得到要處理的一個Item,然后你來決定這個Item是不是要顯示在界面上。這個方案是使用微軟內置的功能實現的,也就是說微軟第一次發布WPF的時候,就已經預見到了類似的需求并提供了支持,而且在他的官方示例中也演示了一翻。所心兩年前就已經有人解釋過個方案(有時要翻墻)就不足為奇了。

筆者寫了一個示例程序,即使用6000項字符串數據進行測試,速度還是很快的。

工作時常常會遇到這樣的情況,要實現諸如WPF搜索列表這樣的功能時,有時一下子就能想到很多個方案出來。然后就直接著手開始寫代碼,寫著寫著才發現吃力不討好。其實這不是努力工作,而是犯懶的表現。因為評估多個解決方案從而找出最佳方案,或是研究一個功能的Best Practice是更需要腦力的。用第一感覺寫代碼,其實只是一種純粹的體力勞動,而且不會有什么提高。“

責任編輯:曹凱 來源: 博客園
相關推薦

2009-12-23 16:39:55

WPF命令

2009-12-25 11:04:51

WPF Border

2009-12-28 11:14:29

WPF顯示文本

2009-12-24 10:04:31

WPF右鍵菜單

2009-12-24 13:31:25

WPF UI設計

2009-12-23 10:01:26

WPF功能

2009-12-25 17:02:33

WPF多媒體

2009-12-28 13:47:35

WPF對話框

2009-12-25 09:34:50

WPF顯示HTML

2009-12-07 15:02:48

PHP搜索數組

2009-12-25 10:05:06

WPF資源

2010-08-31 19:53:25

DHCP功能

2009-12-24 14:18:57

WPF類型轉換

2009-12-23 18:06:25

WPF模板

2009-12-25 10:28:10

WPF路由事件

2009-12-28 16:37:46

WPF異步模式

2012-09-28 09:58:35

Outlook 201Office 2013

2010-09-02 08:48:58

蘋果新款播放列表功能

2010-01-04 16:30:06

Silverlight

2010-06-21 17:10:02

Linux Arp命令
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲www | 二区不卡| 亚洲久久 | 欧美日韩在线一区二区 | 亚洲精品一区二区三区蜜桃久 | 欧美精品video | 久久久久国产 | 一级亚洲 | 国产欧美视频一区二区三区 | av乱码| 亚洲精品一区二区二区 | 国产精品视频999 | 日韩国产高清在线观看 | 7777奇米影视 | 亚洲国产精品久久久久婷婷老年 | 黄色一级片视频 | 91精品国产91久久综合桃花 | 鲁大师一区影视 | 久在线视频| 国产在线精品一区二区三区 | 国产大毛片 | 久久久精 | 国产亚洲一区二区三区在线 | 久久麻豆精品 | 精品久久久久久久久久久 | 欧美日韩国产一区二区三区 | 毛片在线看片 | 日本福利视频免费观看 | www.久久99| 一区二区三区视频在线 | av网址在线 | 欧美亚洲激情 | 凹凸日日摸日日碰夜夜 | 日韩精品免费视频 | 在线观看视频福利 | www久久av| 午夜影院在线观看免费 | 久久精品国产一区二区电影 | 日韩欧美中文字幕在线观看 | 欧美国产日韩在线 | 日本午夜网站 |