我试图在WPF AutoCompleteBox上实现数据虚拟化。我找到了Bea的代码这里,它在ListView上工作得很好,我让它很容易地在ComboBox上工作,但是我不可能让它在AutoCompleteBox上正常工作。
确切地说,它可以工作--列表是虚拟化的,项目并不都是在启动时加载的--但是所发生的似乎是,AutoCompleteBox在列表中的所有项一发生变化就会迭代,这最终会破坏整个列表(即在加载时,请求列表中的所有页面,所以即使它们被虚拟化了,它们在开始时都会被请求并加载)。我猜想这是因为ACBox所做的过滤,但我很惊讶没有办法阻止它,因为控件通常允许使用填充事件在服务器端进行过滤。
我觉得我错过了一些东西,我不敢相信以前没有人做过这样的事情,或者它不能做,所以我猜我只是做了一些明显的错误,因为我是新加入WPF的人。
以下是我所做的一些事情,我试图把这些东西整合在一起(基于针对类似问题的互联网搜索):
欢迎您提出任何建议!
这方面的目标是.NET 3.5,我正在使用WPF工具包(2010年2月版)
谢谢!
发布于 2011-08-26 13:14:49
我追踪到了OnItemsSourceChanged() (参见来源)。在那里,AutocompleteBox存储“数据的本地缓存副本”,这就是我看到上面提到的行为的原因。这是一个私有方法,所以这里不覆盖。
在我看来,由于这一点,您不能将DataVirtualization应用于AutoCompleteBox,至少不使用Bea解决方案中的思想。如果有人对此有不同的想法,我很乐意尝试一下,但在那之前,我相信答案是这样的。
https://stackoverflow.com/questions/6902198
复制相似问题