Если вы используете виртуализацию, вам нужно будет только обновить видимые элементы - обычно элементы управления элементами отслеживают изменения свойств только тех элементов, которые в данный момент видимы.Однако, если вы используете базу ItemsControl
, виртуализация будет отключена по умолчанию.Чтобы включить его, вам нужно предоставить пользовательский шаблон, который включает ScrollViewer
с CanContentScroll
, установленным на True
, и вам также нужно использовать VirtualizingStackPanel
, либо в шаблоне управления, либо через ItemsPanel
- здесь показан предыдущий подход:
<ItemsControl ItemsSource="...whatever...">
<ItemsControl.Template>
<ControlTemplate TargetType="ItemsControl">
<ScrollViewer CanContentScroll="True">
<VirtualizingStackPanel IsItemsHost="True" />
</ScrollViewer>
</ControlTemplate>
</ItemsControl.Template>
</ItemsControl>
Виртуализация повышает производительность при большом количестве элементов списка различными способами.Это должно помочь вашему сценарию, но может также улучшить другие аспекты производительности.Это не без проблем, но я бы определенно попробовал здесь сначала, прежде чем пытаться найти другие решения.