Многопоточность с помощью WPF DataGrid? - PullRequest
1 голос
/ 24 сентября 2010

В настоящее время у меня есть WPF DataGrid, связанный с DataSet через свойство ItemsSource DataGrid в моей программе.При моей текущей настройке у меня возникают проблемы со временем загрузки, которые приводят к блокировке графического интерфейса.Возможно ли многопоточность загрузки DataGrid, чтобы он заполнял строки по мере их загрузки, а не загружал все строки, а затем заполнял DataGrid таким, какой он есть в настоящее время?

Я очень новичок вконцепция многопоточности, поэтому любая помощь будет оценена!

1 Ответ

3 голосов
/ 24 сентября 2010

Проблема в том, чтобы получить доступ к элементам управления пользовательского интерфейса, которые вам необходимы, чтобы быть в потоке пользовательского интерфейса, поэтому для привязки данных трудно просто выполнить работу в отдельном потоке, что в остальном относительно просто.На самом деле этот случай требует небольшой хитрости.

Здесь есть действительно хороший пример, который показывает, как этого добиться с помощью виртуализации данных:

http://www.codeproject.com/KB/WPF/WpfDataVirtualization.aspx

Это решение использует тот факт, что когда ItemsControl привязан к реализации IList, а не к реализации IEnumerable, он не будет перечислять весь список, а вместо этого получит доступ только к элементам, необходимым для отображения.Он использует свойство Count для определения размера коллекции, предположительно для установки экстентов прокрутки.Затем он будет перебирать элементы на экране, используя индексатор списка.Таким образом, можно создать IList, который может сообщать о наличии большого количества элементов, но при этом получать данные только при необходимости.

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