В WPF и Silverlight ItemsControl
может использовать подкласс VirtualizingPanel
, который создает элементы UIE по запросу. Если вы реализуете свой собственный подкласс (вместо использования, например, VirtualizingStackPanel
), который реализует интерфейс IScrollInfo
, то, что вы можете сделать, это метод MeasureOverride()
, вы можете заполнить видимую область как можно большим количеством элементов. поместите (минус 1) и поместите элемент «Еще ...» в конце.
Есть пара хороших постов в блоге о реализации ваших собственных VirtualizingPanel
и IScrollInfo
, но для начала у Дэна Кревье есть серия по реализации VirtualizingTilePanel
:
http://blogs.msdn.com/dancre/archive/tags/VirtualizingTilePanel/default.aspx
В своем 4-м посте (последнем, который он написал) у него есть ссылка для загрузки исходного кода, который может оказаться полезным.
Тогда есть серия блогов Бена Констебла на IScrollInfo
в http://blogs.msdn.com/bencon/archive/tags/Avalon+2F00+WPF/default.aspx
На прошлой неделе я сам использовал эти 2 ресурса, чтобы помочь мне реализовать классы VirtualizingPanel
и VirtualizingStackPanel
в Moonlight (это еще один ресурс, который вы можете просмотреть, если не боитесь использовать Subversion захватить svn: //anonsvn.mono-project.com/source/trunk/moon. Вы найдете мою реализацию VirtualizingStackPanel
под луной / class / System.Windows / System.Windows.Controls / VirtualizingStackPanel.cs
Надеюсь, это поможет.