Я работаю с WPF DataGrid и .Net 4.5, и я пытаюсь запустить собственный контейнер виртуализации данных для большой коллекции. Я был повсюду в Интернете и нашел много полезных примеров того, как реализовать виртуализацию данных, но в каждом примере, который я видел, экономия теряется, если вы производите группировку. Моя группировка проста и статична. Есть ли способ подделать группировку в WPF таким образом, что моей коллекции не нужно перечислять все элементы раньше времени? Например, кто-нибудь когда-либо переопределял ListCollectionView
GetItemAt()
и только что вернул объект CollectionViewGroup
в начале каждой группы?Как создать пользовательскую (плоскую) коллекцию, которая включает в себя группировку?
Конкретный пример:
- Скажем, например, у меня есть база данных с 100K записей. Я хочу создать коллекцию виртуализации данных, подобную Bea Stollnitz' example, и использовать ее в WPF DataGrid.
- Я хочу группировать элементы в DataGrid в поле, но я могу это сделать, изменив запрос базы данных, чтобы сначала вернуть все элементы в группе A, а затем все элементы группы B. Группирование выполняется до того, как DataTable даже видит это ,
- Как визуально представлять группировку внутри DataGrid WPF, хотя моя коллекция (с точки зрения DataGrid) плоская? Единственный способ показать группировку в DataGrid - это использовать CollectionView или подобное.
.
Так что я думаю, что, возможно, наконец (после 3 дней поиска) нашел работоспособный ответ, [эта ссылка] (http://blog.smoura.com/wpf-toolkit-datagrid-part-iv-templatecolumns-and -row-grouping /) из [StackOverflow] (http://stackoverflow.com/a/7000681/999613). Особенно полезен раздел «Поддельная группировка с помощью ViewModel». – millejos