Use a single bulk update (such as ObservableRangeCollection.AddRange) or replace the ItemsSource entirely. Enable RecycleElement, down-sample and cache images, move heavy work off the UI thread, and keep templates lightweight.
public ObservableRangeCollection<string> Items { get; } = new();
public void LoadItems_Correct()
{
var list = new List<string> { "A", "B", "C", "D", "E" };
Items.AddRange(list); // Single UI update, much faster
}
Share with