Как я могу управлять списком с очень большими данными в WPF? - PullRequest
0 голосов
/ 10 апреля 2011

Мне нужно создать пару списков в приложении WPF, которые должны показывать большое количество элементов. Все данные поступают из базы данных оракула. ​​

Как я понимаю, virtualizingstackpanel применима для производительности при большом отображении данных, но я предполагаю, что она управляет только генерацией списков для оптимизации Я тоже хочу контролировать оперативную память, поскольку у меня их несколько. Я думаю, что соединение с открытым курсором к oracle должно служить цели минимизации ОЗУ, а использование virtualizingpanel оптимизирует генерацию listboxitems. Но я не могу понять, как это сделать.

Есть ли готовый элемент управления или код, который я мог бы использовать для решения этой проблемы?

1 Ответ

1 голос
/ 13 апреля 2011

Плохие новости: я не думаю, что вы сможете использовать что-либо, производное от ItemsControl. Похоже, что когда ItemsSource установлен, коллекция Items становится фиксированной и доступна только для чтения, поэтому вы не можете просто создать свой собственный IEnumerable. Это означает, что вам, вероятно, придется самостоятельно выполнять виртуализацию данных и пользовательский интерфейс. (см. http://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol.itemssource.aspx)

При этом, вы, вероятно, могли бы сделать некоторые трюки с обертками вокруг ваших объектов. Например, если вы получили счетчик, вы, вероятно, могли бы составить легкий список объектов-оболочек. Объекты-обертки будут содержать пользовательское свойство getter / setter, которое будет обращаться к курсору. Я не думаю, что это было бы слишком сложно сделать.

Хорошая новость: похоже, у Telerik могут быть какие-то элементы управления процентами - http://blogs.telerik.com/blogs/posts/10-10-20/data_virtualization_for_your_silverlight_and_wpf_applications.aspx - если вы готовы платить.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...