Извините за поздний ответ ... Это то, что Microsoft "добавил" в .Net 4.5 (Pixel на основе прокрутки).
В WPF 4 TreeView имеет логическую прокрутку, но ListBox и ItemsControl этого не делают. Так как же это работает на TreeView, а не на ListBox? Это вопрос, который следует задать, поскольку управление прокруткой осуществляется с помощью VirtualizingStackPanel.
Ну, «секрет» находится во внутреннем свойстве в VirtualizingStackPanel под названием IsPixelBased.
Если вы установите значение true, вы получите логическую прокрутку назад.
Однако это имеет стоимость. Похоже, что с большим источником предметов (даже с виртуализацией и переработкой контейнеров) свиток вялый. (источник больших предметов равен 50 000 или 100 000), в то время как физическая (на основе предметов) прокрутка - нет.
Я надеюсь, что этот вопрос решается в WPF 4,5
Вот пример наличия Виртуализация pabel с Pixel Based прокруткой по умолчанию:
public class VSP : VirtualizingStackPanel
{
public VSP()
{
typeof(VSP).GetProperty("IsPixelBased", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(this, true, null);
}
}
Под «физической, а не логический», вы используя «логический», чтобы ссылаться на виртуализацию пользовательского интерфейса? Если вам, вас может заинтересует этот вопрос: [Виртуализация элемента управления ItemsControl] (http://stackoverflow.com/q/2783845/302677) – Rachel