我们的项目中有一个快速筛选选项,当用户在文本框中键入“测试”文本时,它会筛选出 WPF ListView 并在 3 列( View 有 7 列)上匹配文本。问题是,ListView 需要更多的时间来过滤项目(比如 3 秒)。并且用户必须等待键入“est”单元,过滤完成“T”。这给用户带来了糟糕的体验。
ListView 绑定(bind)到 ObservableCollection<SomeItemViewModel>
.我试图将可搜索列保留在单独的 Dictionary<string, string>
中,其中值将是 3 个可搜索列的字符串连接。这个想法不是从 ObservableCollection 中搜索每一列和每一行,而是可以从 Dictionary
中过滤出匹配的记录。值并填写 Collection
.这种方法效果稍好,但仍不能令人满意。
还有其他方法吗?
最佳答案
一种选择是不在用户开始输入时立即开始过滤。您可以做的是,在文本框的 OnTextChanged 事件中,启动一个时间跨度非常小的计时器,用户不会注意到它(在 100 毫秒内)。计时器时间跨度的到期将触发将开始过滤的事件。如果文本在计时器到期之前更改,请重置计时器。 仅在计时器到期时过滤文本。这将确保只有在用户完成输入他们想要过滤的完整文本后才会进行过滤。
关于c# - WPF ListView 中的快速筛选器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23210231/