首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >WPF AutoCompleteBox数据虚拟化

WPF AutoCompleteBox数据虚拟化
EN

Stack Overflow用户
提问于 2011-08-01 17:38:14
回答 1查看 1.1K关注 0票数 1

我试图在WPF AutoCompleteBox上实现数据虚拟化。我找到了Bea的代码这里,它在ListView上工作得很好,我让它很容易地在ComboBox上工作,但是我不可能让它在AutoCompleteBox上正常工作。

确切地说,它可以工作--列表是虚拟化的,项目并不都是在启动时加载的--但是所发生的似乎是,AutoCompleteBox在列表中的所有项一发生变化就会迭代,这最终会破坏整个列表(即在加载时,请求列表中的所有页面,所以即使它们被虚拟化了,它们在开始时都会被请求并加载)。我猜想这是因为ACBox所做的过滤,但我很惊讶没有办法阻止它,因为控件通常允许使用填充事件在服务器端进行过滤。

我觉得我错过了一些东西,我不敢相信以前没有人做过这样的事情,或者它不能做,所以我猜我只是做了一些明显的错误,因为我是新加入WPF的人。

以下是我所做的一些事情,我试图把这些东西整合在一起(基于针对类似问题的互联网搜索):

  • 我确保内置UI虚拟化的所有条件都正常,包括显式打开它、设置ListBox的最大高度等。
  • 我将AutoCompleteBox中的AutoCompleteBox替换为一个ListView,就像Bea在她的示例中使用的那样。同时,ListView本身也按预期工作,但嵌入在ACBox中的则不起作用。
  • 我尝试在ACBox中使用不过滤,使用自定义过滤器,手动处理填充均匀度等等,这没有帮助。创建自定义筛选器显然是不够的,因为自定义筛选器只允许您指定计算一个项的结果,循环遍历列表的代码是不可见的,因此不能阻止循环。将过滤器转换为"None“也不会有任何效果。

欢迎您提出任何建议!

这方面的目标是.NET 3.5,我正在使用WPF工具包(2010年2月版)

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-26 13:14:49

我追踪到了OnItemsSourceChanged() (参见来源)。在那里,AutocompleteBox存储“数据的本地缓存副本”,这就是我看到上面提到的行为的原因。这是一个私有方法,所以这里不覆盖。

在我看来,由于这一点,您不能将DataVirtualization应用于AutoCompleteBox,至少不使用Bea解决方案中的思想。如果有人对此有不同的想法,我很乐意尝试一下,但在那之前,我相信答案是这样的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6902198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档