Не уверен, что означают «проблемы с производительностью», но я собираюсь предположить, что это означает, что когда вы заполняете коллекцию из потока пользовательского интерфейса, она блокирует приложение достаточно долго, и кажется, что он не отвечает.
Существует дваобщие решения для этого.Во-первых, просто заполните свою коллекцию из фонового потока.
Наивная реализация состоит в том, чтобы просто перенести загрузку в поток ThreadPool, а затем с помощью диспетчера распределить вызовы для добавления элементов в ObservableCollection в поток пользовательского интерфейса.
Более хороший подход (одинкоторый вообще не включает ViewModel) должен использовать асинхронные привязки. Вы настраиваете запасной вариант к некоторому значению, которое указывает загружаемому пользователю.Иногда (в зависимости от ситуации) вы можете использовать PriorityBinding для постепенного заполнения вашего пользовательского интерфейса.
Другими альтернативами являются предварительная загрузка и кэширование данных при отображении заставки .Они немного отличаются в WPF, это не похоже на старое «покажи эту форму, пока я работаю, а затем покажу основную форму» в режиме winforms.И, конечно же, всегда есть классическая нумерация данных.Его сложно кодировать, но эффективно.На самом деле, я должен сказать, что это сложно в пользовательском интерфейсе.Теперь легко в коде (database.Skip(pageNumber * pageSize).Take(pageSize)
).