我有一个 WPF 列表框控件,我希望允许用户使用预先输入来更改所选项目。我正在寻找的行为与 Windows 资源管理器完全一样。当您继续键入文件夹名称的文本时,列表将继续选择更正确的项目。
例如假设这个文件夹结构:
OtherFolderName
MyFirstFolder
MyFirstFileFolder
MyFirstList
如果您选择
OtherFolderName
用鼠标,然后开始输入 MyFirstF
项目 MyFirstFolder
将被选中,但如果您继续输入 MyFirstFi
项目 MyFirstFileFolder
将被选中。我的 WPF 列表框没有表现出这种行为,我希望我可以轻松启用它,因为旧的 WinForms 列表框就是这样做的。
最佳答案
看看 TextSearch 类,特别是 TextSearch.TextPath 附加属性:
<ListBox TextSearch.TextPath="FolderName" ... />
TextSearch.TextPath 属性启用文本搜索并指定如何从每个项目中提取搜索文本。在这种情况下,我假设您的每个 Folder 对象都有一个名为“FolderName”的属性。
如果这不能满足您的所有要求,您可能必须实现自己的搜索,因为 TextSearch 功能不是特别可调整的。去做这个:
我将使用附加属性将其构建为一个单独的类,类似于内置的 TextSearch 类。
关于wpf - 通过键盘 "Type-Ahead"搜索选择 WPF 列表框中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4209774/