很抱歉這麼晚纔回復... 這是(根據滾動像素)的東西,微軟「添加」到.NET 4.5。
在WPF 4上,TreeView確實有一個邏輯滾動,但ListBox和ItemsControl沒有。 那麼它如何在TreeView上而不是在ListBox上工作?這是一個應該詢問的問題,因爲滾動是由VirtualizingStackPanel管理的。
那麼,「祕密」在VirtualizingStackPanel的內部屬性中稱爲IsPixelBased。
如果您將其設置爲true,那麼您將獲得邏輯滾動回來。
但是,這有成本。看起來,對於大型物品來源(即使使用虛擬化和容器回收),滾動仍然很緩慢。 (大項目來源是50,000或100,000),而物理(基於項目)滾動則不是。
我希望這個問題在WPF解決了4.5
這裏是具有默認使用基於像素的滾動一個虛擬化pabel的例子:
public class VSP : VirtualizingStackPanel
{
public VSP()
{
typeof(VSP).GetProperty("IsPixelBased", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(this, true, null);
}
}
通過「物理而非邏輯」,是你使用「邏輯」來引用UI虛擬化?如果你,你可能會對這個問題感興趣:[虛擬化一個ItemsControl](http://stackoverflow.com/q/2783845/302677) – Rachel 2012-03-02 16:06:20