我正在创建一个寄存器,当您在列表框中单击某人的姓名时,该数据可以很好地工作,但是我要为其创建联系人的人要求能够搜索该列表框。我在Internet上四处浏览,但未能找到有关此主题的任何简单帮助,我对C#还是陌生的,因此非常感谢简单的解决方案
答案 0 :(得分:0)
本质上,对于您需要执行的操作,您需要知道两个操作,它们彼此之间是独立的:
ListBox
获取集合 ListBox
将其项保存在集合中。我们只需要访问该集合,然后查询它以找到我们想要的项目。根据您定义ListBox
项的方式,可以使用其Items
或ItemsSource
属性来获取包含项的集合。 ListBox
上项目的类型完全取决于您填充ListBox
的方式。 WPF数据模板约定和模式假定您正在使用数据类型(例如ListBox
)填充MyCoolObject
,因此您要完成的此类操作很容易执行。
有关更多信息,请参见ItemsControl类文档。 ListBox
是ItemsControl
的派生类,本文档描述了在WPF中如何使用带有项目的控件。
这完全取决于您存储项目的位置,但是假设您将项目存储在某个集合中,则可以使用LINQ查找项目。
例如,您可能正在使用一个名为MyCoolObject
的假设自定义对象,该对象具有一个名为String
的{{1}}属性,该属性类似于以下内容:
Text
现在,假设您在以下某处有一个收藏集:
public class MyCoolObject
{
public string Text { get; set; }
public DateTime Date { get; set; }
}
您可以使用像这样的LINQ查询来搜索集合中的一项:
public List<MyCoolObject> myCollection;
我上面使用的var foundObjects = myCollection.Where((myObject) => myObject.Text.Equals("Text you want to find", StringComparison.OrdinalIgnoreCase));
方法接受一个委托,为方便起见,我将其作为lambda表达式提供。在此示例中,我使用二进制比较并忽略大小写来搜索其Where
属性等于“您要查找的文本”的对象。 Text
方法然后返回包含所有找到的对象的集合,该集合存储在Where
变量中。
foundObjects
方法将获取集合中与该文本匹配的所有项目,但是您可以简单地使用Where
方法,该方法将仅返回集合中的第一个对象。
请注意,请记住,LINQ功能要求您在C#文件顶部插入以下using指令,以使它们可用:
FirstOrDefault
有关如何使用C#在集合上查找项目的更多信息,请参见此question。它有几个简单的答案,解释了在集合中找到所需内容的多种方法。
另请参见List.Find方法文档,其中描述了如何使用using System.Linq;
集合的Find
方法(如果您使用List
作为集合)。这不是LINQ功能。
答案 1 :(得分:0)
我将创建一个文本框来保存搜索元素,在跟踪列表框索引的同时遍历搜索该元素的列表框项目。找到时将ListBox selectedIndex设置为相关索引。
如果Linq太复杂,只需使用for或foreach循环