У меня есть сетка в окне WPF и элемент управления DataGrid внутри:
<Grid>
<DataGrid ItemsSource="{Binding AllAuthors}" />
</Grid>
AllAuthors
— это ObservableCollection<Author>
, а Author
— простой класс с несколькими строковыми свойствами. Коллекция содержит около 40 000 объектов в коде. DataGrid открывается довольно быстро (через 1 секунду), и навигация по сетке данных происходит плавно и быстро. Приложение имеет загрузку памяти 35 МБ.
Если я заменю приведенный выше код на...
<StackPanel>
<DataGrid ItemsSource="{Binding AllAuthors}" />
</StackPanel>
... приложение работает со 100% загрузкой процессора, а объем памяти постоянно увеличивается до 1,5 ГБ, пока приложение пытается отобразить DataGrid. Наконец я получаю OutOfMemoryException
.
Я новичок в WPF и теперь думаю, что здесь не так. (Я использую VS2010, .NET 4.0 и встроенный элемент управления DataGrid WPF 4.0)
Спасибо за помощь заранее!