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

问题来源:

自定义一个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,因而在选择这些图像之一时将显示文本。

XAML

<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。

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

时间: 2024-08-10 17:19:26

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

winform中的ListBox和ComboBox绑定数据用法实例

本文实例讲述了winform中的ListBox和ComboBox绑定数据用法.分享给大家供大家参考.具体实现方法如下: 本例实现将集合数据绑定到ListBox和ComboBox控件,界面上显示某个属性的内容,代码如下: 代码如下: //- //自定义了Person类(有Name,Age,Heigth等属性) List<Person> persons=new List<Person>(); persons.Add(new Person("WuMiao",18,17

WPF中使用AxisAngleRotation3D实现CAD的2D旋转功能

原文:WPF中使用AxisAngleRotation3D实现CAD的2D旋转功能 ????? 对于CAD图形来说,3D旋转比较常用,具体实现方法在上篇文章<WPF中3D旋转的实现 >中做了讲解,可以参考Daniel. ????? 今天说一下CAD的2D旋转,2D旋转虽然不如3D那么常用,但也是CAD操作的基本功能需要实现.刚开始的做法是觉得用AxisAngleRotation3D没法实现2D旋转,所以用RotateTransform去实现.但是用它遇到的问题是旋转的transform没有考虑在

WPF中给listbox里边的右键添加菜单

1.在listbox的属性里面找到ContextMenu 2.点下拉按钮添加绑定. 然后在窗体加载时添加集合或者在XAML编辑栏用ItemSource添加, 两种添加方法不能同时启用,如果在XAML编辑中定义了ItemSource,则窗体加载时不能操作Items,Add,但是可以在按钮点击或者其他事件中操作.

WPF中关于ListBox的样式定制

可以自定义ListItem的显示样式,在其中嵌入具体需要呈现的内容 <ListBox Name="antennaListBox" Height="200" Width="149" Margin="0,5,0,0"> <ListBox.ItemTemplate> <DataTemplate> <StackPanel> <TextBlock Text="{Bindin

WPF中实现登陆窗口的“记住帐号”功能

1.在Login.xaml中添加资源: <XmlDataProvider x:Key="XmlDataProvider" Source="pack://application:,,,/5yue.PMS;Component/Config/SysConfig.xml" XPath="SysConfig"/> 2.使用ComboBox实现帐号输入: <ComboBox x:Name="UserName" Width

WPF绑定的ListBox获取ListBoxItem及GoToState应用

现公司项目中需要制作一个扇形菜单,菜单项是用ListBox重写Style实现的,其数据是绑定的.菜单的每一项都有Normal,MouseOver和Selected三种状态,这三种状态当然可以通过鼠标移动和点击控制,但现在要通过代码来改变控件外观实现三种状态切换,该如何处理呢?   1.WPF绑定的ListBox获取ListBoxItem WPF中如果ListBox的ItemSource为绑定的,则ListBox.Items为绑定的数据源,而非ListBoxItem.如果直接通过如下代码会发现无法

WPF中TreeView控件的使用案例

WPF总体来说还是比较方便的,其中变化最大的主要是Listview和Treeview控件,而且TreeView似乎在WPF是一个备受指责的控件,很多人说他不好用.我这个demo主要是在wpf中使用TreeView控件实现图片查看功能,简单的Grid布局.TreeView控件添加图标.TreeView控件的一些事件.显示统计.还有就是读取文件操作. 效果图: 前端主要代码: <Window x:Class="TreeViewDemo.MainWindow" xmlns="

字段他表选择中的快速检索设置

我们在设置平台数据库字段的编辑类型为他表选择时,通常设置如下: 这样设置的运行效果如下所示: 上面这种设置方法,也可以实现他表选择的功能,但是我们要选择人员只能点击图中向下箭头,进入选择界面,输入筛选条件,进行筛选:那么如果我们想要直接在申请人后边的框中输入筛选条件,进行选择人员要怎么办呢? 我们可以在他表选择设置时,设置一下快速检索: 运行效果如下:   我们可以看到,在上面的设置中,我们将姓名的快速检索设置为:包含:而输入码的快速检索设置为了:左匹配 这是怎么回事呢? 为了更好的说明,我们先

WPF中ComboBox用法

The ComboBox control is in many ways like the ListBox control, but takes up a lot less space, because the list of items is hidden when not needed. The ComboBox control is used many places in Windows, but to make sure that everyone knows how it looks