码迷,mamicode.com
首页 > Windows程序 > 详细

在WPF中让ListBox和ComboBox的快速检索功能失效

时间:2015-09-22 18:24:30      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:

问题来源:

自定义一个ComboBox,用来显示日期。后台数据使用的是DateTime,经过Converter转化成“2015年01月01日”样子的成字符串用于显示。

但是,在实际使用中,不停的按下“【”键,光标会从以一个元素一下一下的向下移动。

经过调查,这是ComboBox的“快速检索”功能在作祟。 

关于快速检索:

WPF中ListBox和ComboBox有一个“快速检索”的功能。

比如在ListBox里,按下“a”键,光标会定位到第一个首字母为“a”的Item上。

ComboBox也是一样,在拉开的状态下,按下“a”键,光标也会定位到第一个首字母为“a”的Item上。

快速检索,是在特定条件下才有效的。即:IsReadOnly为true,并且IsReadOnly也为true的时候

在MSDN上有一段说明:请参考

自定义快速检索:

比如:在自定义的ListBox或者ComboBox中,使用了图片等元素,可以用TextSearch.Text属性自定义检索的内容。

下面的示例创建一个 ComboBox 控件,该控件包含图像项而不是文本项。 IsEditable 属性设置为 true,因而在选择这些图像之一时将显示文本。

 
<ComboBox IsEditable="true">
  <Image TextSearch.Text="Cat" Source="data\cat.png"/>
  <Image TextSearch.Text="Dog" Source="data\dog.png"/>
  <Image TextSearch.Text="Fish" Source="data\fish.png"/>
</ComboBox>

这样,就可以使用“c”键来快速检索到“猫”,用“d”和“F”检索到“狗”和“鱼”了。

将快速检索无效化:

方法一:可以将前述的IsReadOnly和IsReadOnly都设为true。

方法二:将IsTextSearchEnabled属性设置成false。

          IsTextSearchEnabled是ItemsControl的属性,意义为:获取或设置一个值,该值指示是否在 ItemsControl 实例上启用 TextSearch

          这样就轻松的对应了我的问题。 

在WPF中让ListBox和ComboBox的快速检索功能失效

标签:

原文地址:http://www.cnblogs.com/lamianxiong/p/4829429.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!